python - 解决
问题描述
我有一个产生的功能:
<async_generator object functionOne at 0x000001CC289F8D30>
是否可以解析 async_generator 对象,使其包含的数组可访问?
解决方案
它后面没有任何数组(它是一个生成器,设计为惰性),您应该使用async for
or 手动迭代这个对象,使用__aiter__()
and __anext__()
。这可能对你有用:
async_generator_iterator = <your_async_generator_function>()
res = [i async for i in async_generator_iterator]
如果你想在异步上下文之外评估它,只需用异步函数包装它并在事件循环中运行:
async def get_result_async(asyncgen):
return [i async for i in asyncgen]
def get_result_sync(asyncgen):
loop = asyncio.get_event_loop()
coro = get_result_async(asyncgen)
res = loop.run_until_complete(coro)
return res
async def functionOne():
yield 1
yield 2
yield 3
asyncgen = functionOne()
get_result_sync(asyncgen)
# => [1, 2, 3]
推荐阅读
- symfony - 在 Doctrine2 中是否有关于在抽象类上使用 @Entity 注释或将抽象类放入鉴别器映射中的任何禁忌?
- r - str_replace in a data frame?
- html - Flexbox, line break and stretching
- python - Python: trying to copy files from a directory into another directory
- python - Apache Superset 上的多个数据库访问?
- vba - VBA登录sage50
- python - 根据另一列计算一列中的元素-Python
- javascript - How to find adjacent polygons in leaflet
- r - Any way to plot multiple barplots on a map?
- dll - 全局 asa 和 VB6 DLL 中的溢出问题