我希望有人可以提供一些关于 Java 虚拟机的根本不同之处的见解,它允许它很好地实现线程而不需要全局解释器锁 (GIL),而 Python 需要这样一个邪恶。
Python(语言)不需要 GIL(这就是为什么它可以完美地在 JVM [Jython] 和 .NET [IronPython] 上实现,并且这些实现可以自由地多线程)。CPython(流行的实现)一直使用 GIL 来简化编码(尤其是垃圾收集机制的编码)和非线程安全 C 编码库的集成(过去有很多这样的库; -)。
除了其他雄心勃勃的目标之外,Unladen Swallow 项目确实为Python计划了一个无 GIL 虚拟机——引用该网站的话,“此外,我们打算删除 GIL 并修复 Python 中的多线程状态。我们相信这是可以通过实施更复杂的 GC 系统来实现,例如 IBM 的 Recycler(Bacon 等人,2001 年)。”