Jython有全局解释器锁吗?

21 投票
4 回答
6593 浏览
提问于 2025-04-15 12:52

我之前很确定这个问题没有,但在网上寻找确切答案时让我产生了疑问。比如,我看到了一篇2008年的文章,乍一看像是在开玩笑,但仔细一看又觉得好像是认真的。

编辑: ... 结果仔细一看,这确实是个玩笑。抱歉让大家困惑了。其实那篇文章的评论已经回答了我的问题,正如Nikhil正确指出的那样。

我们意识到CPython在这方面远远领先于我们,而我们在兼容性上有所欠缺。经过认真讨论(还有几杯酒),我们决定在Jython中引入全局解释器锁,这样就能解决整个问题!

那么,现在的情况是什么呢?在sourceforge的“差异”页面上根本没有提到GIL。我有没有忽略什么官方来源呢?

另外,我也知道关于GIL是否重要的讨论仍在进行中,但我现在不想关注这个。

4 个回答

5

其实,JythonIronPython 都没有 GIL,这是因为它们的底层虚拟机(VM)实现上没有这个东西。我之前找到过很多相关的信息,现在能找到的只有这个链接

要记住,GIL 主要是在多处理器环境下才会成为问题,而且在可预见的未来,它不太可能从 CPython 中消失

26

你找到的那句话确实是个玩笑,下面是Jython对GIL(全局解释器锁)实现的一个示例:

Jython 2.5.0 (trunk:6550M, Jul 20 2009, 08:40:15) 
[Java HotSpot(TM) Client VM (Apple Inc.)] on java1.5.0_19
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import GIL
  File "<stdin>", line 1
SyntaxError: Never going to happen!
>>> 
23

不,这个不是。它是虚拟机实现的一部分,而不是语言本身。

另请参见:

from __future__ import braces

撰写回答