小编典典

为什么Java虚拟机中没有GIL?为什么 Python 这么需要一个?

all

我希望有人可以提供一些关于 Java 虚拟机的根本不同之处的见解,它允许它很好地实现线程而不需要全局解释器锁 (GIL),而 Python
需要这样一个邪恶。


阅读 80

收藏
2022-07-29

共1个答案

小编典典

Python(语言)不需要 GIL(这就是为什么它可以完美地在 JVM [Jython] 和 .NET [IronPython]
上实现,并且这些实现可以自由地多线程)。CPython(流行的实现)一直使用 GIL 来简化编码(尤其是垃圾收集机制的编码)和非线程安全 C
编码库的集成(过去有很多这样的库; -)。

除了其他雄心勃勃的目标之外,Unladen Swallow 项目确实为Python计划了一个无
GIL 虚拟机——引用该网站的话,“此外,我们打算删除 GIL 并修复 Python 中的多线程状态。我们相信这是可以通过实施更复杂的 GC
系统来实现,例如 IBM 的 Recycler(Bacon 等人,2001 年)。”

2022-07-29