GIL(Global Interpreter Lock,全局解释器锁)是 CPython 并发模型里被误解最深、也最常被当成"背锅侠"的机制。很多团队一遇到性能问题就甩出一句"Python 有 GIL,所以慢",然后转头就换语言,却从来没人去搞清楚:GIL 到底在什么时候锁、什么时候放、多线程在什么场景下依然能拿到可观的吞吐、什么时候才真正需要上多进程或 asyncio。
这篇文章不会停留在"GIL 让多线程只能单核跑"这种正确的废话上,而是从 CPython 的解释器实现出发,把切换机制、锁竞争的真实开销、三种并发范式的选型边界,以及我在生产环境踩过的坑和排查手段,一次性讲透。
2024/8/17大约 13 分钟