如果你是 Python 开发者,你一定经历过这个令人崩溃的时刻:明明服务器有 64 个 CPU 核心,你的多线程程序却只能用一个。罪魁祸首就是 GIL——Global Interpreter Lock,全局解释器锁。这道枷锁锁了 Python 整整 30 年,从 1991 年 Guido van Rossum 发布 Python 0.9.0 的第一天起,GIL 就像一个幽灵般附身在每一个 Python 进程上。
2026 年,这道锁终于被正式打破。Python 3.14 引入了成熟的 free-threading 模式,让 Python 第一次真正拥抱多核并行。YouTube 上 "Python Just Removed the GIL... And It Changes Everything" 这期视频在发布后迅速引爆社区,因为它用最直观的方式告诉开发者:Python 的多线程时代,真的来了。这不仅仅是一个技术参数的更新——它是 Python 从"脚本语言"走向"高性能基础设施"的分水岭。
| 项目 | 内容 |
|---|---|
| 视频标题 | Python Just Removed the GIL… And It Changes Everything. |
| 频道 | 编程教育类频道 |
| 核心主题 | Python 3.14 移除 GIL 对并发的根本性改变 |
| 发布时间 | 2026 年 |
| 核心技术 | PEP 703、free-threading、Python 3.14 |
| 影响范围 | 数百万 Python 开发者的并发编程范式 |
视频开篇用了一个精妙的比喻:GIL 就像一间只有一个话筒的会议室,50 个人都在里面,但同一时刻只有拿到话筒的人才能说话。不管你开多少个线程,Python 解释器同一时刻只允许一个线程执行 Python 字节码。
视频核心观点:GIL 的存在不是设计失误,而是 CPython 实现中一个务实的历史妥协。Python 使用引用计数(reference counting)管理内存,而引用计数天生不是线程安全的。加一个全局锁是最简单的解决方案。
延伸分析:这个妥协在 1991 年完全合理——那时的电脑大多是单核的。但到了多核时代,GIL 变成了 Python 最大的性能瓶颈。视频提到,Python 社区曾多次尝试移除 GIL(包括 1999 年的 Greg Stein 尝试、2010 年的 Antoine Pitrou 提案),但每次都因为"单线程性能回退"被否决。原因很简单:移除 GIL 意味着每个对象操作都要加细粒度锁,这会让单线程代码变慢 20-30%。没有人愿意为了未来的多核性能牺牲今天的单线程体验。
视频详细介绍了 PEP 703 的故事。2022 年,Meta 的工程师 Sam Gross 提交了一个名为 "nogil" 的提案。他不是简单地把锁去掉,而是重新设计了整个内存管理架构:
std::atomic 替代传统的引用计数,不再需要全局锁视频核心观点:PEP 703 的天才之处在于它接受了一个现实——单线程性能不能大幅回退。Sam Gross 通过精密的工程优化,将单线程性能损失控制在了 5% 以内,这是 Python Steering Council 最终批准的关键。
延伸分析:Python 3.13 是转折点——它首次将 free-threading 作为实验性构建选项引入。3.14 则将其提升为正式支持。这种两步走的策略极其明智:先让早期采用者踩坑,再让生态系统有时间适配。
视频最令人兴奋的部分是基准测试。作者运行了一系列对比实验:
CPU 密集型任务(多线程): - 传统 GIL 模式:增加线程几乎无性能提升,甚至因线程切换开销反而变慢 - Free-threading 模式:8 线程下性能接近线性扩展,实际提升约 6-7 倍
I/O 密集型任务: - 两种模式差异不大(I/O 操作本身就会释放 GIL)
单线程性能: - Free-threading 模式下约 2-5% 的性能回退(因为原子操作的开销)
延伸分析:根据社区的 benchmark 数据,free-threading 的效果在不同场景下差异巨大。纯数值计算(如 NumPy/Pandas)受益最大,因为这些操作已经绕过了 GIL。真正受益的是那些需要大量 Python 对象操作的场景——Web 服务器、数据处理管道、AI 推理框架等。Python 3.14 的 tail-call 优化和 Zstd 压缩模块等新特性进一步弥补了性能损失。
视频没有回避一个残酷的现实:不是所有代码都能无缝迁移到 free-threading 模式。
关键问题包括:
- C 扩展兼容性:大量使用 Py_INCREF/Py_DECREF 的 C 扩展需要重写,因为 free-threading 下这些宏的行为发生了变化
- 第三方库生态:截至 2026 年中,仍有大量主流库未完全适配 free-threading
- 调试难度:真正的多线程会暴露以前被 GIL 掩盖的并发 bug——竞态条件(race condition)、死锁(deadlock)等问题会浮出水面
视频核心观点:视频强调了一个反直觉的事实——GIL 虽然限制了性能,但它也提供了一种"隐式安全"。GIL 保证了一段 Python 代码不会被另一个线程打断,这让很多 Python 程序员在不知不觉中写出了"线程安全"的代码。移除 GIL 后,你需要重新审视你的多线程设计。
延伸分析:Python 3.14 同时引入了 concurrent.interpreters 模块作为替代方案。多个子解释器各自拥有独立的 GIL,可以真正并行执行。这为不想处理线程安全问题的开发者提供了一条更安全的路径。
视频最后探讨了 GIL 移除对整个技术生态的连锁反应:
Python 在高性能计算领域的地位将改变: - 以前 Python 需要 GIL 时,高性能计算(HPC)场景不得不依赖 multiprocessing(多进程),进程间通信开销巨大 - Free-threading 让 Python 可以像 Go、Rust 一样用轻量级线程处理并行任务
对 AI/ML 框架的影响: - PyTorch 和 TensorFlow 的 Python 层将获得真正的多线程推理能力 - AI 推理服务器(如 vLLM、TGI)不再需要为每个请求启动独立进程
编程语言竞争格局: - Python 在并发方面的最大短板被补齐,Go 的 "goroutine 比 Python 线程好用" 这张牌不再那么有说服力 - 但 Rust 在内存安全和零成本抽象方面仍然领先
视频提供了具体的操作步骤:
# 安装 free-threaded Python 3.14
# 从 python.org 下载 free-threaded 构建
# 或使用 pyenv:
pyenv install 3.14.0t
# 验证是否支持 free-threading
python -c "import sys; print(sys._is_gil_enabled())"
# 输出 False 表示 GIL 已禁用
关键注意事项(视频强调):
- Free-threading 是可选的——你仍然可以使用传统 GIL 模式
- 需要所有关键依赖库都支持 free-threading 才能真正受益
- 建议先用 PYTHON_GIL=0 环境变量测试兼容性
视频还简要提及了 Python 3.14 的其他亮点:
- Tail-call 优化:对递归性能有显著提升
- Zstd 压缩模块:内置 zstandard 支持,压缩比和速度都优于 gzip
- 改进的错误消息:更友好的 traceback 和类型提示
- Template Strings:新的字符串处理语法,简化文本模板操作
mindmap
root((Python GIL 革命))
历史
1991 GIL诞生
1999 Greg Stein首次尝试移除
2022 Sam Gross提交PEP 703
2025 Python 3.13实验性支持
2026 Python 3.14正式free-threading
核心技术
引用计数→原子操作
Borrowed Reference机制
细粒度锁替代全局锁
C扩展渐进式迁移
性能影响
多线程线性扩展
单线程2-5%回退
IO密集型无显著差异
CPU密集型6-7倍提升
生态影响
Web服务器并发提升
AI推理框架受益
C扩展需适配
调试复杂度上升
替代方案
concurrent.interpreters
multiprocessing仍可用
asyncio不受影响
传统GIL模式保留
立即测试兼容性:如果你的项目主要依赖 NumPy、Pandas、FastAPI 等已经适配 free-threading 的库,现在就可以开始用 PYTHON_GIL=0 进行测试。不要等到所有库都适配才开始——越早发现问题越好。
审查你的多线程代码:移除 GIL 后,那些"碰巧线程安全"的代码可能会出现竞态条件。重点检查所有共享状态的访问,特别是全局变量和类属性的并发读写。Python 的 threading.Lock 现在变得比以往任何时候都重要。
重新评估架构决策:如果你之前因为 GIL 而选择了 multiprocessing 方案(多进程),现在是时候评估是否可以简化为多线程方案。进程间通信(IPC)的开销远大于线程间共享内存,free-threading 可能让你大幅降低资源消耗。
关注 C 扩展迁移进度:如果你是库的维护者,PEP 703 提供了详细的迁移指南。关键是将 Py_INCREF/Py_DECREF 替换为线程安全的等价操作,并确保所有共享状态的访问都有适当的锁保护。
对 AI 从业者:这是真正的利好消息。如果你在做 LLM 推理服务,free-threading 意味着你可以用更少的进程、更低的内存占用处理更多的并发请求。这对于 GPU 推理场景尤其重要——减少进程间的内存复制可以直接提升吞吐量。
Python 杀死 GIL 的故事给我们一个重要启示:技术债务不是不可以还的,但需要找到正确的时机和方法。Sam Gross 之所以成功,不是因为他比前人更聪明,而是因为: - 硬件环境变了——多核已经普及到手机 - 工具链成熟了——atomic 操作和编译器优化在 2020 年代远胜 2000 年代 - 生态压力增大了——AI/ML 场景对性能的渴求让社区无法再容忍 GIL
Python 用 30 年的时间证明了一件事:没有什么技术债务是永远还不掉的——只要有人愿意在正确的时间,用正确的方法,去推倒那堵看似不可能的墙。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
