2009-07-13 11 views
16

Ich war sicher, dass es nicht hat, aber auf der Suche nach einer definitiven Antwort auf die Interwebs ließ mich im Zweifel. Zum Beispiel bekam ich eine 2008 post, die auf den ersten Blick wie ein Witz aussah, aber ernst zu sein schien, genauer hinzuschauen.Hat Jython die GIL?

Edit: ... und wandte sich an noch näher nach einem Blick ein Witz aus. Entschuldigung für die Verwirrung. Tatsächlich beantworten die Kommentare zu diesem Beitrag meine Frage, wie Nikhil richtig gesagt hat.

Wir haben festgestellt, dass CPython uns in diesem Bereich weit voraus ist und uns die Kompatibilität fehlt. Nach ernsthaftem Brainstorming (und ein paar Gläsern Wein) entschieden wir, dass die Einführung eines Global Interpreter Lock in Jython das ganze Problem lösen würde!

Nun, was ist der Status hier? Die "differences" page on sourceforge erwähnt die GIL überhaupt nicht. Gibt es eine offizielle Quelle, die ich übersehen habe?

Beachten Sie auch, dass ich mir der laufenden Diskussion bewusst bin, ob die GIL überhaupt von Bedeutung ist, aber das interessiert mich im Moment nicht.

+0

Es Früher habe ich mich noch nicht an die Pythonic Humor scheint. Ich brauchte eine Weile, um zu verstehen, was in dem von mir zitierten Post vor sich ging. Danke für deine Hinweise. –

Antwort

20

Nein, tut es nicht. Es ist ein Teil der VM-Implementierung, nicht die Sprache. auch

Siehe:

from __future__ import braces 
+5

+1. Außerdem war dieser Beitrag von 2008 ein bisschen ein Witz ... siehe die Kommentare. –

3

Sowohl Jython und IronPython "Mangel" der GIL, weil es sich um eine Implementierung Detail der zugrunde liegenden VM ist. Es gab eine Menge Informationen, die ich vor einiger Zeit gefunden hatte, jetzt war das einzige, was ich mit is this erreichen konnte.

Denken Sie daran, dass die GIL nur ein Problem nur für Multiprozessor-Umgebung ist, und dass it's unlikely to go away in the foreseable future von CPython.

-1

Google macht eine Python-Implementierung, die eine modifizierte cpython mit Leistungsverbesserungen namens unladen Schwalbe ist. Dies wird dafür sorgen, dass die GIL entfernt wird. Siehe: Unladen Swallow

+0

Es sieht so aus, als würden sie es nicht entfernen. Der Ansatz, den sie getroffen haben (um GIL zu entfernen), erwies sich als zu naiv, also ließen sie diese Idee fallen und konzentrierten sich darauf, die Beschleunigung auf Single-Core zu bekommen. Sehen Sie dieses Gespräch [1] [1] http://pycon.blip.tv/file/3261170/ – konryd

+0

Unladens Auswahl von LLVM stellte sich heraus, um eine dynamische Sprache wie Python nicht zu beschleunigen. Gerade jetzt ist PyPy viel schneller, aber hat auch immer noch die GIL wegen des Fehlens von Reentry-Garbage Collectors: http://doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil -Warum –

23

Das Zitat Sie ein Witz war in der Tat gefunden, hier ist eine Demo von Jython-Implementierung der 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! 
>>>