异步编程与协程
异步编程概述
异步编程是一种并发编程模式,通过非阻塞操作显著提升程序执行效率。在等待 I/O 操作(如网络请求、文件读写)完成时,程序不会挂起,而是继续处理其他任务。这种方式特别适合高并发的网络应用。
核心优势:
- 提升效率:I/O 等待期间不占用 CPU 资源,可切换至其他任务。
- 降低开销:相比多线程,减少了线程创建和上下文切换的成本。
- 代码简洁:利用协程和事件循环,逻辑结构更清晰。
典型场景:
- 网络通信(HTTP、WebSocket)
- 大文件读写
- 数据库异步查询
协程的定义与使用
协程(Coroutine)是轻量级的用户态线程,支持暂停和恢复。在 Python 中,使用 async def 定义协程函数。
import asyncio
async def hello():
print('Hello, World!')
await asyncio.sleep(1)
print('Hello again!')
asyncio.run(hello())
协程的暂停与恢复由事件循环管理。当遇到 await 时,当前协程挂起,控制权交还给循环,直到被等待的操作完成。
import asyncio
async def count():
print('Counting...')
await asyncio.sleep(1)
print('Counted!')
async def main():
await asyncio.gather(count(), count(), count())
asyncio.run(main())
任务调度
创建任务
使用 asyncio.create_task() 将协程封装为 Task 对象,以便并发执行。


