SuperAPI AI 工具集

python-asyncio

编程与开发

查看项目

更新于 10-15 23:41

技能介绍

用途: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。具体版本支持与性能数据以资料所述为准。