章节摘要:Python 并发的所有"玄学"——多线程跑不满 CPU、多进程开销大、异步快但代码怪——根子都在全局解释器锁。本章先把 GIL 的机制讲透(它保护什么、何时释放),再用它统一解释三种并发模型的取舍矩阵,最后系统讲 asyncio 的事件循环思维。
阅读完本章,你应当能够:
先问 IO 还是 CPU,再问规模——两个问题问完,选型只剩一个答案。
GIL 的机制与实验、threading 与 multiprocessing 的真实表现、竞态与锁的正确用法。
事件循环调度模型、async/await 语义、并发原语与常见陷阱。
8.1 用实验建立"GIL 决定线程天花板"的事实;8.2 的 asyncio 是绕开 GIL 的第三条路(单线程协作式调度)。两节合起来给出完整的并发决策地图。
前置:第 1 章引用计数(GIL 的因果起点)、第 7 章生成器的暂停恢复(协程的前身)。
并发这一章的检验标准很实际:拿到任务先测 IO 与 CPU 的时间占比,再按矩阵选模型,最后用实验验证选择是否兑现了预期加速。三步走完,你对 GIL 的理解就不再是知道有这把锁,而是知道它什么时候碍事、什么时候无关、什么时候根本不该出现在你的方案里。另有一句提醒:并发 bug 的特点是难复现、看运气,竞态可能百万次运行才现形一次,所以并发代码评审的价值远高于事后调试,上线前把共享状态的每一处读写过一遍,比事后翻日志划算太多。
为后续铺垫:第 9 章 Web 服务、爬虫的高并发抓取、数据库连接池,全部按本章的选型矩阵落地。