CPython使用Global Interpreter Lock。Linux已经移除了Big Kernel Lock的所有痕迹。这些锁的替代方案是什么?一个系统如何才能充分利用一个真正的多核或多处理器系统,而不会把一切都搞得一团糟?
发布于 2011-06-10 09:16:06
如果python使用了一个更高级的垃圾收集器,比如IBM's Recycler,它就不需要GIL了。这就是Unladen Swallow为了提高python的性能而做的事情。一个更有说服力的答案是Stackless Python,它使用自己的微线程实现,而不是像传统的CPython那样依赖操作系统。
发布于 2011-03-03 15:47:21
GIL是特定于进程的,所以您可以通过启动几个Python进程来绕过它。为此,multiprocessing module提供了一个易于使用的应用程序接口。
另一种方法是使用C扩展(或编写自己的扩展),它在执行所需的数据处理时发布GIL。
发布于 2011-06-10 12:03:37
很简单。没有可变状态,就像Haskell和其他函数式编程语言一样。由于不需要更改内存中的任何内容,因此不需要全局锁。
https://stackoverflow.com/questions/5177895
复制相似问题