在 .Net C# 中,有一个函数
Task.WhenAll
可以获取任务列表来等待它们。我应该在 python 中使用什么?我正在尝试这样做:
tasks = ... # list of coroutines
for task in tasks:
await task
asyncio.gather
将协程作为参数列表并异步执行它们。此外,您还可以使用 asyncio.create_task
来获取协程并在事件循环中调用并发任务。
import asyncio
async def coro(i):
await asyncio.sleep(i//2)
async def main():
tasks = []
for i in range(5):
tasks.append(coro(i))
await asyncio.gather(*tasks)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
asyncio.gather
。来自文档:
同时运行 aws 序列中的可等待对象。 如果 aws 中的任何可等待项是协程,则会自动将其安排为任务。 如果所有可等待项均成功完成,则结果是返回值的聚合列表。结果值的顺序对应于 aws 中可等待的顺序。