python协程多任务asyncio不同gather
时间: 2023-10-13 11:23:27 浏览: 52
`asyncio.gather()` 和 `asyncio` 协程的主要区别在于:
- `asyncio.gather()` 用于并行运行多个协程并等待它们全部完成,而 `asyncio` 协程是单个协程的执行。
- `asyncio.gather()` 可以在一个任务中同时运行多个协程,而 `asyncio` 协程需要手动在代码中切换协程。
- `asyncio.gather()` 可以在一个任务中同时运行多个协程,并且可以在所有协程都完成后返回结果,而 `asyncio` 协程需要在协程之间手动传递数据。
举个例子,假设我们有两个协程 `coro1()` 和 `coro2()`,我们可以使用 `asyncio.gather()` 使它们并行运行并等待它们全部完成,如下所示:
```python
import asyncio
async def coro1():
print('coro1 started')
await asyncio.sleep(2)
print('coro1 finished')
async def coro2():
print('coro2 started')
await asyncio.sleep(1)
print('coro2 finished')
async def main():
await asyncio.gather(coro1(), coro2())
asyncio.run(main())
```
输出结果:
```
coro1 started
coro2 started
coro2 finished
coro1 finished
```
在上面的例子中,我们使用 `asyncio.gather()` 并行运行了 `coro1()` 和 `coro2()`,并且等待它们全部完成后才结束程序。