我想使用生成器产量和异步函数.我读了这个主题,并编写了下一个代码:
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
Run Code Online (Sandbox Code Playgroud)
但我得到了错误:
SyntaxError:异步函数内的'yield'
如何在异步函数中使用yield生成器?
假设我有一个可以传递的异步迭代,async for然后如何将它映射并过滤到新的异步迭代器?以下代码是对我如何使用同步迭代执行相同操作的修改不起作用,因为s中yield不允许这样做async def.
async def mapfilter(aiterable, p, func):
async for payload in aiterable:
if p(payload):
# This part isn't allowed, but hopefully it should be clear
# what I'm trying to accomplish.
yield func(payload)
Run Code Online (Sandbox Code Playgroud)