2026年,Python 4.0的发布标志着Python社区30年来最大的变革:GIL(Global Interpreter Lock,全局解释器锁)终于被移除了。
对于Python社区来说,GIL就像是一个「老朋友」——你讨厌它,但你已经习惯了和它一起生活。GIL让Python的多线程编程名存实亡,但也让Python的内存管理变得简单安全。现在,这个「老朋友」走了,Python社区需要面对一个全新的世界。
GIL是什么,为什么它被仇恨了30年
GIL是Python解释器中的一个互斥锁,它确保在任何时刻只有一个线程在执行Python字节码。这意味着,即使你有一个64核的CPU,你的Python多线程程序也只能用一个核。
GIL的初衷是好的。Python的内存管理(引用计数)不是线程安全的,如果没有GIL保护,多个线程同时对同一个对象进行引用计数操作,会导致内存泄漏或崩溃。GIL用一个简单的「全局锁」解决了这个问题,代价是多线程性能的丧失。
在过去的30年里,Python社区一直试图移除GIL。但每次尝试都遇到了两个问题:要么单线程性能大幅下降,要么C扩展的兼容性被破坏。GIL就像一颗「心脏」——你很难把它换掉,而不杀死病人。
2024年,Python核心开发者Sam Gross(同时也是Meta的工程师)提出了「nogil」方案,使用「偏向引用计数」(Biased Reference Counting)和「延迟引用计数」(Deferred Reference Counting)来替代GIL。这个方案在保持单线程性能的同时,实现了真正的多线程并行。2025年,nogil被合并到Python主线。2026年,Python 4.0正式发布,GIL成为一个可选的「遗留模式」。
移除GIL的真正影响
移除GIL的影响,比你想象的要复杂得多。
第一,多线程终于「可用」了。 在Python 4.0中,你可以在多线程中真正并行执行CPU密集型任务。一个64核的CPU,现在可以同时跑64个Python线程。对于数据处理、科学计算、AI推理等场景,性能提升是数量级的。Meta的测试显示,在PyTorch的数据加载流水线中,Python 4.0的多线程性能比Python 3.13提升了5-8倍。
第二,但多线程编程的难度也增加了。 GIL被移除后,Python的多线程变成了「真正的多线程」——你的代码现在需要面对数据竞争、死锁、活锁等所有多线程编程的经典问题。以前,因为有GIL,你可以在很多场景下「偷懒」不写锁。现在,你必须认真对待线程安全。Python 4.0提供了新的threading模块和asyncio的增强,但工具再好,也需要程序员学会使用。
第三,C扩展的冲击。 大量现有的C扩展(如NumPy、Pandas、TensorFlow)在编写时假设了GIL的存在。在Python 4.0的无GIL模式下,这些扩展需要进行「线程安全」改造。Python官方提供了一套迁移工具,但迁移成本仍然巨大。2026年,NumPy 2.0和Pandas 3.0已经完成了无GIL适配,但很多小众的C扩展可能永远无法完成迁移。
第四,异步编程的「存在感危机」。 Python的asyncio库,很大程度上是为了绕过GIL而诞生的。既然多线程不能用,那就用异步IO来提升并发性能。现在GIL没了,asyncio的「存在理由」被削弱了。对于IO密集型任务,asyncio仍然是更好的选择(因为它避免了线程切换的开销),但对于CPU密集型任务,多线程可能比asyncio更简单直接。
Python 4.0的「分裂」风险
Python 4.0最大的风险,不是技术上的,而是社区上的。GIL的移除可能会导致Python社区分裂为「无GIL派」和「有GIL派」。
「无GIL派」认为GIL是Python最大的性能瓶颈,移除GIL是Python赶上C++和Rust的必经之路。他们在新项目中使用无GIL模式,享受真正的多线程性能。
「有GIL派」认为GIL的移除增加了编程的复杂性,而Python的核心价值是「简单」。他们继续使用GIL模式(Python 4.0仍然支持),避免多线程的复杂性。
如果C扩展的兼容性分裂——有些扩展只支持GIL模式,有些扩展只支持无GIL模式——Python社区将面临类似Python 2到Python 3迁移的「分裂危机」。只不过,这次的分裂不是「语法」层面的,而是「运行时」层面的。
Python的未来
我不认为GIL的移除会「杀死」Python。Python的成功不只靠性能,更靠生态和社区。但移除GIL确实会让Python进入一个「转型期」——和Python 2到3的迁移一样,这个转型期会持续3-5年。
Python 4.0的GIL移除,是Python从「简单脚本语言」向「高性能通用语言」的进化。在这个过程中,有阵痛,有分裂,有不确定性。但30年后回头看,这可能是Python走向「主流系统编程语言」的第一步。
Python 4.0移除了GIL,也移除了Python的最后一道枷锁。