await asyncio.wait()什么作用
时间: 2023-05-27 17:04:55 浏览: 87
asyncio.wait()用于等待一组协程对象的完成。它接收一个由协程对象组成的集合,等待它们完成,返回完成的协程对象集合和未完成的协程对象集合。如果参数return_when指定为asyncio.FIRST_COMPLETED,它将立即返回一个完成的协程对象集合和未完成的协程对象集合,即使还有其它协程对象没有完成。
例如:
```
import asyncio
async def coroutine1():
await asyncio.sleep(1)
print("coroutine1 has completed")
async def coroutine2():
await asyncio.sleep(2)
print("coroutine2 has completed")
async def main():
tasks = [asyncio.create_task(coroutine1()), asyncio.create_task(coroutine2())]
done, pending = await asyncio.wait(tasks)
for task in done:
print(f"{task} has completed")
asyncio.run(main())
```
运行结果:
```
coroutine1 has completed
<Future finished result=None> has completed
coroutine2 has completed
<Future finished result=None> has completed
```
在这个例子中,我们定义了两个协程对象coroutine1和coroutine2,它们分别休眠1秒和2秒后输出结果。在main函数中,我们创建了这两个协程对象的任务,并用asyncio.wait()等待它们完成。最终,我们得到了完成的协程对象集合(done),其中包含两个Future对象,分别表示coroutine1和coroutine2的完成,同时还有一个空的未完成的协程对象集合(pending)。接下来,我们遍历完成的协程对象集合,输出完成的任务对象和它们的结果。
阅读全文