##### asyncio.任务 - 任务 - 任务用于**封装协程**,并将其添加到事件循环中以进行调度和执行。它是一种用于管理和控制异步操作的对象。 - 任务类型用于表示一个正在执行的协程。每个 任务 都与一个协程相关联,并且可以通过事件循环来调度和执行。Task 的状态可以是运行中、等待中或已完成。 - **多个 任务 可以同时在事件循环中并发执行**,从而实现并发性和并行性。这对于处理多个异步操作非常有用,例如同时发起多个网络请求 - 当你使用 `await` 关键字等待一个任务时,实际上是等待任务对象的执行结果。任务对象内部封装了一个协程,事件循环可以在后台并发地执行这个协程。因此,`await` 一个任务不会阻塞事件循环,而是会让事件循环继续处理其他可执行的任务,实现了并发执行的效果。 ##### 示例 ```python import asyncio async def custom_coro(people): print(f"{people}号客人: 点餐") await asyncio.sleep(1) # 等待另一协程 print(f"{people}号客人: 拿餐") async def main(): task_1 = asyncio.create_task(custom_coro(1)) # 创建任务 A task_2 = asyncio.create_task(custom_coro(2)) # 创建任务 B await task_1 # 等任务完成 await task_2 # 等任务完成 asyncio.run(main()) # 并行任务 # 1号客人: 点餐 # 2号客人: 点餐 # 1号客人: 拿餐 # 2号客人: 拿餐 ```