解释性语言如何避免使用全局解释器锁(GIL)?

CPython使用全局解释器锁。 Linux已经删除了大内核锁的所有痕迹。 什么是这些锁的替代品? 一个系统如何充分利用真正的多核或多处理器系统,而不会把所有的事情都停下来?


如果python使用像IBM的Recycler这样的更高级的垃圾收集器,那么GIL就没有必要了。 这是Unladen Swallow为改善蟒蛇性能而做的事情。 一个更有前途的答案是Stackless Python,它使用自己的微线程实现,而不像传统的CPython那样依赖于操作系统。


GIL是特定于流程的,所以你可以通过启动几个Python流程来解决它。 多处理模块为此提供了一个易于使用的API。

另一种方法是使用C-extensions(或编写自己的)来发布GIL,同时进行所需的数据处理。


简单。 没有可变状态,就像Haskell和其他函数式编程语言一样。 由于内存中没有内容需要更改,因此不需要全局锁。

链接地址: http://www.djcxy.com/p/86463.html

上一篇: How can an interpretive language avoid using Global Interpreter lock (GIL)?

下一篇: Does running separate python processes avoid the GIL?