Jython有全局解释器锁吗?
我之前很确定这个问题没有,但在网上寻找确切答案时让我产生了疑问。比如,我看到了一篇2008年的文章,乍一看像是在开玩笑,但仔细一看又觉得好像是认真的。
编辑: ... 结果仔细一看,这确实是个玩笑。抱歉让大家困惑了。其实那篇文章的评论已经回答了我的问题,正如Nikhil正确指出的那样。
我们意识到CPython在这方面远远领先于我们,而我们在兼容性上有所欠缺。经过认真讨论(还有几杯酒),我们决定在Jython中引入全局解释器锁,这样就能解决整个问题!
那么,现在的情况是什么呢?在sourceforge的“差异”页面上根本没有提到GIL。我有没有忽略什么官方来源呢?
另外,我也知道关于GIL是否重要的讨论仍在进行中,但我现在不想关注这个。
4 个回答
5
其实,Jython
和 IronPython
都没有 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