Python 异步编程与协程实战指南

异步编程概述
异步编程是一种通过非阻塞操作提升程序执行效率的并发方式。在等待 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 关键字,它表示当前协程在此处暂停,直到被等待的对象完成。多个协程可以通过 asyncio.gather() 并发执行:
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
():
()
asyncio.sleep()
()
():
task1 = asyncio.create_task(hello())
task2 = asyncio.create_task(hello())
task1
task2
asyncio.run(main())


