##### asyncio.wait()
- `asyncio.wait(aws, *, timeout=None, return_when=ALL_COMPLETED)`
- 用于等待一组协程任务的完成
- `aws`:一个可迭代的可等待对象集合,表示待等待的协程任务
- `timeout`:等待的最长时间秒
- `return_when`:等待结束的条件,默认值为 `ALL_COMPLETED`,表示等待所有任务完成后返回
- `asyncio.wait()` 函数返回一个元组 `(done, pending)`,其中 `done` 是一个包含已完成的 Future 对象的集合,`pending` 是一个包含未完成的 Future 对象的集合。当 `return_when` 参数为 `FIRST_COMPLETED` 时,`done` 集合将包含至少一个已完成的 Future 对象
```python
import asyncio
async def coro1(people):
print(f"{people}号客人: 点中餐")
await asyncio.sleep(2) # 模拟等待另一制作协程
print(f"{people}号客人: 拿中餐")
async def coro2(people):
print(f"{people}号客人: 点西餐")
await asyncio.sleep(1) # 模拟等待另一制作协程
print(f"{people}号客人: 拿西餐")
async def main():
# 创建协程任务
task1 = asyncio.create_task(coro1(1))
task2 = asyncio.create_task(coro2(2))
task3 = asyncio.create_task(coro1(3))
# 等待所有协程任务完成
done, pending = await asyncio.wait([task1, task2, task3])
# 输出已完成的任务信息
for task in done:
print(f"{task} 完成服务")
asyncio.run(main())
# 1号客人: 点中餐
# 2号客人: 点西餐
# 3号客人: 点中餐
# 2号客人: 拿西餐
# 1号客人: 拿中餐
# 3号客人: 拿中餐
```