await asyncio.gather
时间: 2024-09-17 21:05:41 浏览: 66
Python3.7的新API:asyncio.run()
`await asyncio.gather()` 是Python `asyncio` 库中的一个功能,它允许你同时执行并等待多个异步任务(通过Future或协程)。相比于`asyncio.wait()`,`gather()` 的主要区别在于:
1. **预封装**:`await asyncio.gather()` 会自动将非Task的协程(coroutine)转换成`Future`对象,这样可以统一处理。这意味着你可以直接传入协程列表,无需显式地将它们包装。
下面是一个简单的示例:
```python
import asyncio
# 定义一些协程
async def task1():
await asyncio.sleep(1)
return "task1 result"
async def task2():
await asyncio.sleep(2)
return "task2 result"
# 使用await asyncio.gather()
tasks = [task1(), task2()]
results = await asyncio.gather(*tasks)
for result in results:
print(result) # 输出:"task1 result", "task2 result"
```
在这个例子中,`await asyncio.gather(*tasks)` 同时启动并等待所有协程完成,返回的结果是一个列表,包含了每个协程的返回值。
阅读全文