asyncio 是 Python 3.4 引入的异步 I/O 框架,用于编写并发的网络和 IO 程序。它基于协程(coroutine)实现,能有效提升 IO 密集型任务的性能。🚀
核心概念
- 事件循环(Event Loop):驱动 asyncio 的核心,负责调度协程的执行
- 异步函数(
async def
):通过await
关键字挂起当前协程,让事件循环调度其他任务 - 并发 vs 并行:asyncio 实现的是并发(通过单线程切换任务),而非多线程的并行
简单示例
import asyncio
async def count(name, count_to):
print(f"{name} counting to {count_to}")
for i in range(count_to):
await asyncio.sleep(0.1) # 模拟 IO 操作
print(f"{name}: {i}")
async def main():
await asyncio.gather(count("A", 3), count("B", 5))
if __name__ == "__main__":
asyncio.run(main())
适用场景
- 网络请求(如 HTTP 客户端/服务器)
- 数据库操作(异步查询)
- 文件读写(非阻塞操作)
- 游戏开发(事件驱动逻辑)
学习建议
- 先理解协程与线程的区别(点击查看详解)
- 掌握
async/await
语法糖的使用 - 实践异步文件读写:asyncio_file_operations
通过异步编程,可以显著降低高 IO 密集型应用的延迟。建议结合实际项目练习,如开发异步爬虫或实时数据监控系统。📊