asyncio.gather
时间: 2024-08-17 13:00:50 浏览: 52
Python3.7的新API:asyncio.run()
`asyncio.gather`是`asyncio`库中的一个重要功能,用于同步式地并行执行多个异步任务。它接收一个或多个协程(`coroutine`)作为参数,这些协程会被安排在同一事件循环中并发执行。当你调用`await asyncio.gather(*tasks)`时,所有传入的任务会在单次`await`语句中一起开始执行,直到它们全部完成或遇到第一个失败的任务。
例如,如果你有三个任务,你可以这样使用`gather`:
```python
import asyncio
async def task_1():
print('Task 1 started')
await asyncio.sleep(1)
print('Task 1 finished')
async def task_2():
print('Task 2 started')
await asyncio.sleep(2)
print('Task 2 finished')
async def task_3():
print('Task 3 started')
await asyncio.sleep(0.5)
print('Task 3 finished')
# 同时启动这三个任务
await asyncio.gather(task_1(), task_2(), task_3())
```
这将会打印出类似这样的输出:
```
Task 3 started
Task 1 started
Task 2 started
Task 3 finished
Task 1 finished
Task 2 finished
```
`asyncio.gather`的主要优点是可以简化代码,避免频繁地写`await`,但需要注意的是,如果其中一个任务失败,`gather`会立即中断其他任务并返回失败的任务结果,而不是继续执行后续任务。因此,通常会配合`try-except`块来处理可能出现的错误。
阅读全文