1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Trophäen
  4. Forum
    1. Unerledigte Themen
  5. Artikel
  6. Lexicon
    1. Last Changes
  • Login
  • Register
  • Search
Lexicon
  • Everywhere
  • Articles
  • Pages
  • Forum
  • Lexicon
  • More Options
  1. Deutsches Raspberry Pi Forum
  2. Lexicon

GIL

  • noisefloor
  • October 7, 2023 at 6:24 PM
  • January 1, 2026 at 9:25 PM
  • 2,262 times viewed
  • 3 comments
  • "global interpreter lock" (auf deutsch: globale Interpretersperre)

    GIL steht für "global interpreter lock" (auf deutsch: globale Interpretersperre). Der GIL im CPython-Interpreter, also der am häufigsten genutzten Python-Implementierung, sorgt dafür, dass innerhalb eines Interpreterprozesse mehrere Threads nicht gleichzeitig ausgeführt werden können und es so nicht zu konkurrierenden Speicherzugriffen und Race Conditions kommt.

    Beim Programmieren mit Python kommt man mit dem GIL normalerweise nicht direkt in Kontakt. Wenn man aber ein Programm schreibt, welches Multithreading einsetzt, kann der GIL relevant werden. Startet man mittels des threading oder concurrent.futures Modul mehrere Threads, werden diese in CPython aufgrund des GIL nicht parallel ausgeführt.

    Seit Anfang 2023 gibt es seitens der Python-Entwickler Arbeiten, um den GIL aus Python zu entfernen. Python 3.13 ist die erste Python-Version, bei der man beim selber kompilieren ein GIL-freies Python bauen kann. Standardmäßig ist der GIL aber nach wie vor aktiv.

    Um zu sehen, ob das verwendete CPython mit oder ohne GIL kompiliert wurde, kann man im interaktiven Python-Interpreter die folgenden Befehle nutzen:

    Python
    >>> import sys
    >>> sys._is_gil_enabled()
    True
    #bedeutet: mit GIL bebaut; ohne GIL würde man `False` zurück erhalten

    weiterführend Links:

    • Erklärung zum GIL im Python-Wiki
    • ausführlicher Artikel zum GIL bei RealPython
    • PEP 703: "Making the Global Interpreter Lock Optional in CPython" - Beschreibung, wie der GIL aus Python entfernt werden kann
  • Previous entry Flask
  • Next entry gpiozero

Comments 3

__blackjack__
October 7, 2023 at 6:39 PM

Was ist denn “echtes Mutltithread(ing)“? Mit der Definition kann man in keiner Programmiersprache ”echtes” Multithreading haben wenn man nicht so viele CPUs wie Threads hat. Insbesondere nicht auf Rechnern die nur eine CPU/einen Kern haben.

CPython benutzt die Thread-Implementierung vom System, also unter Linux ganz normale, POSIX-Threads. Das GIL ist dazu da, das immer nur ein Thread Python-Bytecode ausführen kann, damit die internen Interpreter-Strukturen sicher sind. Wenn in C geschriebener Code ausgeführt wird, dann kann das GIL freigegeben werden, und wird es auch, beispielsweise bei Systemaufrufen die blockierend sind (sleep, Dateioperationen, …), und Erweiterungen wie Numpy geben auch das GIL frei wenn Berechnungen in C (oder C++, Fortran, …) laufen.

Threads zu haben garantiert keine Parallelität. Unabhängig von der Programmiersprache. Als ich das erste mal mit Threads in Kontakt kam unter Java, da hatten Normalsterbliche PCs mit einem Prozessor mit einem Prozessorkern. Das sind trotzdem echte Threads.

noisefloor
October 8, 2023 at 10:04 AM

Das man den GIL freigeben / umgehen weiß ich. Habe ich aber mit Absicht nicht aufgenommen, weil wer das weiß und anwenden kann wahrscheinlich auch den Lexikoneintrag nicht (mehr) lesen muss.

Kannst du meinetwegen aber gerne ergänzen.

__blackjack__
October 8, 2023 at 1:52 PM

Wer das nicht weiss denkt aber wenn er das da liest, das das GIL grundsätzlich Parallelität verhindert. Und wird dann gar nicht auf die Idee kommen das man *ohne was zu tun* bei einigen Bibliotheken doch einen Geschwindigkeitsgewinn durch Threads hat.

Registrierung

Don’t have an account yet? Register yourself now and be a part of our community!

Register Yourself

Categories

  1. Hardware 78
  2. Software 109
    1. Smarthome 7
    2. Künstliche Intelligenz 5
  3. Programmierung 34
    1. Python 10
    2. C · C++ 7
    3. andere Programmiersprachen 4
  4. Betriebssysteme 39
  5. Netzwerk 33
  6. Forenabkürzungen 38

Contributors in this entry

  1. noisefloor 4 changes
  2. ps915 2 changes
  1. Datenschutzerklärung
  2. Impressum

Forenregeln

Lexicon, developed by www.viecode.com
Powered by WoltLab Suite™