##### 协程
- 协程
- 协程是一种特殊的函数,可以在执行过程中被挂起并暂停,然后在需要的时候恢复执行。协程的使用能够实现异步编程,避免了阻塞,提高了程序的并发性能。协程对象只能在事件循环运行时运行
- 在Python中,使用 [[py.async|async def]] 关键字来定义一个协程函数,而在协程函数中,使用 [[py.await|await]] 关键字来等待异步操作的结果
- 当你直接使用 `await` 关键字等待一个协程时,事件循环会阻塞在这个协程上,直到这个协程执行完成为止。这意味着,后续的代码需要等待这个协程执行完成后才能继续执行,因此不能并发执行其他任务
```python
# 定义一个协程
async def custom_coro(people):
print(f"{people}号客人: 点餐")
await asyncio.sleep(1) # 等待另一协程
print(f"{people}号客人: 拿餐")
# 创建协程对象,没有运行
coro = custom_coro(1)
print(type(coro))
# <class 'coroutine'>
# 创建主协程
async def main(people):
await custom_coro(1) # 等待另一协程
await custom_coro(2) # 等待另一协程
# 创建事件循环运行主协程
asyncio.run(main(1))
# 没有并行
# 1号客人: 点餐
# 1号客人: 拿餐
# 2号客人: 点餐
# 2号客人: 拿餐
```