【问题标题】:Does Jython have the GIL?Jython 有 GIL 吗?
【发布时间】:2010-11-10 08:36:53
【问题描述】:

我确信它没有,但在互联网上寻找明确的答案让我怀疑。例如,我收到了一个2008 post,乍一看有点像开玩笑,但仔细一看似乎是认真的。

编辑: ... 仔细观察后发现 是个笑话。对困惑感到抱歉。实际上,正如 Nikhil 正确指出的那样,该帖子上的 cmets 回答了我的问题。

我们意识到 CPython 在这方面遥遥领先,而且我们缺乏兼容性。经过认真的头脑风暴(和几杯酒),我们决定在 Jython 中引入全局解释器锁可以解决整个问题!

现在,这里的状态如何? "differences" page on sourceforge 根本没有提到 GIL。有没有我忽略的官方来源?

另请注意,我知道正在进行的关于 GIL 是否重要的​​讨论,但我暂时不在乎。

【问题讨论】:

  • 我似乎还不习惯 Python 式的幽默。我花了一段时间才明白我引用的那篇文章中发生了什么。感谢您的提示。

标签: python multithreading jython


【解决方案1】:

不,它没有。它是 VM 实现的一部分,而不是语言。

另见:

from __future__ import braces

【讨论】:

  • +1。此外,2008 年的那篇文章有点儿笑话……见 cmets。
【解决方案2】:

JythonIronPython 都“缺少”GIL,因为它是底层 VM 的实现细节。前段时间找了很多资料,现在唯一能想到的就是is this

请记住,GIL 只是多处理器环境中的问题,而 it's unlikely to go away in the foreseable future 来自 CPython

【讨论】:

    【解决方案3】:

    Google 正在开发一种 Python 实现,它是一种改进的 cpython,性能得到了改进,称为 unladen 燕子。这将负责删除 GIL。 见:Unladen Swallow

    【讨论】:

    • 看起来他们毕竟没有删除它。他们采取的方法(去除 GIL)被证明过于幼稚,所以他们放弃了这个想法,转而专注于在单核上获得加速。看这个演讲 [1] [1] pycon.blip.tv/file/3261170
    • Unladen 对 LLVM 的选择被证明并不足以加速像 Python 这样的动态语言。现在 PyPy 快得多,但由于缺少可重入垃圾收集器,仍然有 GIL:doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil-why
    【解决方案4】:

    你找到的引用确实是个笑话,这里是 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!
    >>> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-26
      • 2013-01-02
      • 1970-01-01
      • 2013-02-06
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多