Python 异步编程与协程实战
异步编程概述
异步编程是一种并发编程方式,通过非阻塞操作显著提升程序执行效率。在等待 I/O 操作完成时,程序可以继续处理其他任务,无需阻塞线程。
核心优势
- 提升效率:I/O 等待期间不占用 CPU 资源,可并行处理其他逻辑。
- 降低开销:减少线程切换带来的系统开销。
- 结构简洁:利用协程和任务调度,代码逻辑更清晰。
适用场景
网络通信(HTTP、WebSocket)、文件大文件读写、数据库查询等 I/O 密集型任务。
协程的定义与使用
协程(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 对象,便于并发管理。
import asyncio
async def hello():
print()
asyncio.sleep()
()
():
task1 = asyncio.create_task(hello())
task2 = asyncio.create_task(hello())
task1
task2
asyncio.run(main())


