Bye bye GIL: Python 3.12 ermöglicht Multithreading ohne Einschränkungen

Hey Leute, wisst ihr, was in der Welt der Programmiersprachen gerade los ist? Es gibt eine ziemlich coole Änderung in Python, die uns allen das Leben ein bisschen einfacher machen könnte. Es geht um den Global Interpreter Lock (GIL) – diese kleine Einschränkung, die Multithreading-Anwendungen bisher beeinträchtigt hat.

Aber was ist eigentlich dieser GIL? Nun, der GIL ist so etwas wie der “Thread-Polizist” in Python. Er sorgt dafür, dass immer nur ein Thread gleichzeitig aktiv ist und verhindert so sogenannte “Race Conditions”. Klingt kompliziert, oder? Das bedeutet einfach nur, dass es keine Konflikte gibt, wenn mehrere Threads gleichzeitig auf die gleichen Daten zugreifen und diese verändern wollen. Der GIL stellt sicher, dass alles ordentlich nacheinander abläuft und keine seltsamen Ergebnisse auftauchen.

Aber hier kommt das Problem: Der GIL verhindert auch, dass Python das volle Potenzial von Mehrkernprozessoren oder Multiprozessorsystemen ausschöpfen kann. Das ist natürlich doof, denn wir alle haben gerne so viel Power wie möglich, oder? Deshalb gab es schon länger Diskussionen darüber, den GIL abzuschaffen und Python “multithreading-freundlicher” zu machen.

Und jetzt kommt die gute Nachricht: In Python 3.12 wurde eine Änderung eingeführt, die den GIL deaktivierbar macht. Ja, ihr habt richtig gehört! Ihr könnt den GIL einfach ausschalten und eure Multithreading-Anwendungen können das volle Potenzial eurer Hardware nutzen. Das klingt doch super, oder?

Aber wie funktioniert das Ganze? Nun, es gibt jetzt die Möglichkeit, sogenannte Sub-Interpreters zu erstellen, die unabhängige Locks besitzen. Das ist sozusagen ein erster Schritt in die richtige Richtung. Aber der eigentliche Durchbruch kam mit dem Python Enhancement Proposal (PEP) 703, das im Januar 2023 von Sam Gross von Meta s Facebook AI Research eingereicht wurde. Der Vorschlag hieß “Making the Global Interpreter Lock Optional in CPython” und hat in der Python-Community für ziemlich viel Aufsehen gesorgt.

Nachdem das Core-Developer-Team eine Umfrage durchgeführt hat und sich eine klare Mehrheit für eine verbesserte Variante für Multithreading ausgesprochen hat, wurde ein Pull Request für das CPython-Projekt akzeptiert. Das bedeutet, dass ihr jetzt Flags verwenden könnt, um den GIL zur Laufzeit zu deaktivieren. Mit den Flags PYTHON_GIL oder -X gil0 könnt ihr den GIL einfach ausschalten und loslegen.

Natürlich gibt es ein paar Dinge zu beachten und Herausforderungen während der Übergangsphase, aber hey, das ist doch ein kleiner Preis, um das volle Potenzial eurer Hardware auszuschöpfen, oder? Diese Änderung wurde erfolgreich in den Hauptzweig des CPython-Projekts integriert und wird voraussichtlich mit Python 3.13 verfügbar sein. Das heißt, dass ihr bald in den Genuss einer verbesserten Unterstützung für Multithreading-Anwendungen kommen könnt.

Also, liebe Entwickler, schnappt euch eure Mehrkernprozessoren und Multiprozessorsysteme und lasst eure Python-Programme so richtig loslegen! Keine Race Conditions mehr, dafür aber jede Menge Power. Viel Spaß beim Programmieren!

Schlagwörter: Python + GIL + PEP

Wie bewerten Sie den Schreibstil des Artikels?
1 Star2 Stars3 Stars4 Stars5 Stars
  • 15. März 2024