Python 需要 GIL。但 Jython 和 IronPython 没有。为什么?

2024-01-22

为什么您可以运行 Jython 和 IronPython 而无需 GIL,但 Python (CPython) 需要 GIL?


解释器的某些部分不是线程安全的,尽管主要是因为通过大量使用锁使它们全部线程安全会极大地减慢单线程速度(source) http://effbot.org/pyfaq/can-t-we-get-rid-of-the-global-interpreter-lock.htm。这似乎与使用引用计数的 CPython 垃圾收集器有关(JVM 和 CLR 没有,因此不需要每次都锁定/释放引用计数)。但即使有人想到了一个可以接受的解决方案并实现了它,第三方库仍然会遇到同样的问题。

请注意,用 C 编写的扩展实际上可以摆脱 GIL:http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 需要 GIL。但 Jython 和 IronPython 没有。为什么? 的相关文章

随机推荐