用途:Python asyncio 是内置的异步编程框架,用于以 async/await 语法编写并发代码,适合网络请求(HTTP、WebSocket)、数据库查询、文件 I/O 以及 FastAPI/Starlette 等异步 Web 服务。不适合 CPU 密集型任务(应改用多进程)、简单顺序脚本或无异步支持的旧代码库。
主要能力与用法:
- 入口与并发:asyncio.run(main()) 启动;await asyncio.gather(*tasks) 并发执行任务;asyncio.create_task(coro) 立即启动任务;顺序 await 耗时相加,gather 取最长耗时。
- 结构化并发:Python 3.11+ 的 async with asyncio.TaskGroup() as tg 创建任务,退出上下文时全部完成,可用 except* 按异常类型分组处理。
- 限流与超时:asyncio.Semaphore() 控制并发数;asyncio.wait_for(..., timeout=5.0) 或 Python 3.11+ 的 async with asyncio.timeout(5.0)。
- 进阶:asyncio.Queue 实现生产者-消费者;async generator 与 async context manager(含 @asynccontextmanager)。
- 性能:Python 3.12+ eager_task_factory,uvloop(pip install uvloop)可提速 2-4 倍,3.14+ 自由线程改进。
- 常用库:aiohttp、httpx、asyncpg、aiosqlite。
限制与常见陷阱:time.sleep 会阻塞事件循环,应改用 await asyncio.sleep 或 loop.run_in_executor;create_task 须在异步上下文中调用;协程必须 await,否则不执行;任务异常需 await 或 TaskGroup 捕获;CPU 密集请用 ProcessPoolExecutor。具体版本支持与性能数据以资料所述为准。