我想使用生成器yield和异步函数。我阅读了这个主题,并编写了以下代码:
import asyncio
async def createGenerator():
mylist = range(3)
for i in mylist:
await asyncio.sleep(1)
yield i*i
async def start():
mygenerator = await createGenerator()
for i in mygenerator:
print(i)
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(start())
except KeyboardInterrupt:
loop.stop()
pass
但我收到了错误:
SyntaxError: 'yield' 在异步函数中
如何在异步函数中使用生成器的 yield ?
async
表示被调用的函数不能依赖于其状态。否则就会出现数据竞争。支持异步生成器似乎非常繁琐,它们需要用锁机制进行包装。所以你的问题的答案可能在这个方向上。 - luk32