如何在Python中等待任务列表?

Ern*_*ord 4 c# python async-await python-asyncio

在 .Net C# 中,有一个函数Task.WhenAll可以获取任务列表来等待它们。我应该在 python 中使用什么?我正在尝试对此做同样的事情:

tasks = ...  # list of coroutines
    
for task in tasks:
    await task
Run Code Online (Sandbox Code Playgroud)

Art*_*yan 7

将任务添加到列表后,您应该使用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()
Run Code Online (Sandbox Code Playgroud)