为什么不需要 GIL 就可以运行 Jython 和 IronPython 而 Python (CPython) 需要 GIL?
问问题
2561 次
2 回答
11
解释器的某些部分不是线程安全的,尽管主要是因为通过大量使用锁使它们都成为线程安全的会极大地减慢单线程(来源)。这似乎与使用引用计数的 CPython 垃圾收集器有关(JVM 和 CLR 没有,因此不需要每次都锁定/释放引用计数)。但即使有人想到了一个可接受的解决方案并实施了它,第三方库仍然会遇到同样的问题。
请注意,用 C 编写的扩展实际上可以摆脱 GIL:http ://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock
于 2010-08-07T05:06:37.620 回答
3
我的猜测,因为 CPython 所基于的 C 库不是线程安全的。而 Jython 和 IronPython 分别针对 Java 和 .Net 构建。
于 2010-08-07T04:50:33.533 回答