相关疑难解决方法(0)

如何在异步函数中使用'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
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

SyntaxError:异步函数内的'yield'

如何在异步函数中使用yield生成器?

python yield python-asyncio python-3.5

41
推荐指数
2
解决办法
2万
查看次数

如何异步映射/过滤异步迭代?

假设我有一个可以传递的异步迭代,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)

python async-await python-asyncio

12
推荐指数
2
解决办法
3780
查看次数

标签 统计

python ×2

python-asyncio ×2

async-await ×1

python-3.5 ×1

yield ×1