第 14 章:异步编程:asyncio
学习目标:
- 理解协程、事件循环和 Task 三者的关系
- 掌握 async/await 语法和 asyncio 核心API
- 能用 TaskGroup 编写结构化并发程序
- 知道何时该用异步、何时该用线程/进程
14.0 从同步到异步:一个性能问题
回顾第13章的电商场景——串行请求 5 个 API 各需 200ms,总计 1 秒。用多线程可以缩短到约 200ms,但创建 1000 个线程做 1000 个请求呢?线程的内存开销(每线程约 8MB 栈空间)和上下文切换成本会让系统不堪重负。
asyncio 的承诺:用单线程 + 协作式调度实现同等并发能力。一个协程的内存开销仅约 2KB,1 万个并发连接只需约 20MB——这是 asyncio 在高并发 I/O 场景下的核心优势。
| 并发方案 | 1000 并发连接内存 | 适用场景 | 生产案例 |
|---|---|---|---|
| threading | ~8GB (1000×8MB) | 少量并发 I/O | — |