gpt4 book ai didi

python - asyncio 协程/任务准备就绪后立即对其进行迭代

转载 作者:行者123 更新时间:2023-11-28 21:41:44 27 4
gpt4 key购买 nike

我使用 aiohttp 发起了一堆请求。有没有办法在每次请求完成后,一一得到结果?

也许使用类似async for 的东西?还是 Python 3.6 异步生成器?

目前我await asyncio.gather(*requests) 并在所有完成后处理它们。

最佳答案

asyncioas_completed可能满足您需要的功能。注意,它返回常规迭代器,而不是异步的。

这是用法示例:

import asyncio


async def test(i):
await asyncio.sleep(i)
return i


async def main():
fs = [
test(1),
test(2),
test(3),
]

for f in asyncio.as_completed(fs):
i = await f # Await for next result.
print(i, 'done')



loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(main())
finally:
loop.run_until_complete(loop.shutdown_asyncgens())
loop.close()

输出:

1 done
2 done
3 done

关于python - asyncio 协程/任务准备就绪后立即对其进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com