asyncio.gather 作用详解
时间: 2023-08-30 15:06:24 浏览: 196
Python中的asyncio代码详解
asyncio.gather()是异步编程中的一个函数,它可以同时运行多个协程,并且等待它们全部完成后再返回结果。它的作用类似于Python中的concurrent.futures模块的ThreadPoolExecutor或ProcessPoolExecutor。
使用asyncio.gather()函数可以简化异步编程的代码,特别是在需要同时等待多个协程完成的情况下。下面是一个使用asyncio.gather()函数的例子:
```python
import asyncio
async def foo():
print("foo")
await asyncio.sleep(1)
print("foo again")
return "foo result"
async def bar():
print("bar")
await asyncio.sleep(2)
print("bar again")
return "bar result"
async def main():
results = await asyncio.gather(foo(), bar())
print(results)
asyncio.run(main())
```
在这个例子中,我们定义了三个协程函数foo()、bar()和main(),其中main()函数使用asyncio.gather()函数同时运行foo()和bar()函数。运行结果如下:
```
foo
bar
foo again
bar again
['foo result', 'bar result']
```
在这个例子中,我们可以看到,foo()和bar()协程函数同时开始运行,执行过程中会输出"foo"和"bar"信息,然后等待1秒和2秒,分别输出"foo again"和"bar again"信息,最后返回"foo result"和"bar result"结果。在main()函数中,我们使用asyncio.gather()函数同时运行foo()和bar()函数,等待它们全部完成后,将它们的返回结果打印出来。
阅读全文