首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释语言如何避免使用全局解释器锁(GIL)?

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

Stack Overflow用户
提问于 2011-03-03 15:34:22
回答 4查看 1.2K关注 0票数 6

CPython使用Global Interpreter Lock。Linux已经移除了Big Kernel Lock的所有痕迹。这些锁的替代方案是什么?一个系统如何才能充分利用一个真正的多核或多处理器系统,而不会把一切都搞得一团糟?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-10 09:16:06

如果python使用了一个更高级的垃圾收集器,比如IBM's Recycler,它就不需要GIL了。这就是Unladen Swallow为了提高python的性能而做的事情。一个更有说服力的答案是Stackless Python,它使用自己的微线程实现,而不是像传统的CPython那样依赖操作系统。

票数 4
EN

Stack Overflow用户

发布于 2011-03-03 15:47:21

GIL是特定于进程的,所以您可以通过启动几个Python进程来绕过它。为此,multiprocessing module提供了一个易于使用的应用程序接口。

另一种方法是使用C扩展(或编写自己的扩展),它在执行所需的数据处理时发布GIL。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 12:03:37

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5177895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档