Python-Versand: Die GIL optional machen

Der Lenkungsrat hat eine große Ankündigung über die Zukunft von Python. Sie haben nämlich beschlossen, die Global Interpreter Lock (GIL) in CPython optional zu machen und die GIL schließlich ganz zu entfernen.

Dies ist eine wichtige Entscheidung, die Python grundlegend verändern wird.

Deshalb werde ich in diesem Beitrag erläutern, was die GIL ist, welche Vor- und Nachteile sie hat und was die Zukunft bringt.

Die GIL

Lassen Sie mich das Global Interpreter Lock Wort für Wort in umgekehrter Reihenfolge durchgehen, beginnend mit sperren und dann Dolmetscher und schließlich, weltweit.

Eine Sperre ist ein Mechanismus, der es nur einem Thread erlaubt, zur gleichen Zeit zu laufen. Wenn also ein Thread die Sperre in die Hände bekommt, erhält er exklusiven Zugriff auf den Python-Interpreter.

Eine Interpreter ist das Programm zur Ausführung von Python-Code.

Das Wort "global" bezieht sich hier auf den Geltungsbereich der Interpretersperre. Da die Interpreter-Sperre global ist, garantiert sie, dass innerhalb eines einzelnen Prozesses jeweils nur ein Thread den Python-Code ausführt.

Kredit: StatusNeo.

Die GIL ist also ein Mechanismus, der verhindert, dass mehrere Threads gleichzeitig durch den Interpreter laufen. Aber warum sollte man das wollen?

Vorteile

Der Hauptvorteil der GIL besteht darin, dass sie die Dinge einfacher macht. Die Verwaltung des Speichers ist einfacher, die Verwaltung von Threads ist einfacher, und die Erstellung von Modulen ist einfacher.

Ohne die GIL kann es beim Multithreading schnell zu Problemen kommen. Wenn Sie nicht die richtigen lokalen Sperren für jeden Thread einrichten, kann es passieren, dass Sie Python zum Absturz bringen oder einen anderen Speicher im Computer beschädigen.

Und wenn man kein Multithreading betreibt, ist die GIL sehr hilfreich, weil sie dafür sorgt, dass alles reibungslos läuft.

Mit der GIL ist alles einfach und sicher.

Warum sollten Sie das dann nicht wollen?

Benachteiligungen

Der Kompromiss besteht darin, dass die Einfachheit durch die Geschwindigkeit aufgehoben wird.

Da die GIL Multithreading verhindert, macht sie CPython langsamer und weniger leistungsfähig als einige andere Sprachen (wie C++, Go und Rust).

Vor allem mit der explosionsartigen Entwicklung der KI in den letzten Monaten wird die GIL immer mehr zu einem Problem bei der schnellen und effizienten Ausführung von Programmen.

Die Zukunft der GIL

Nachdem der Lenkungsrat nun bekannt gegeben hat, dass er die Python Enhancement Proposal (PEP) 703, geschrieben von Sam Grossbegeben wir uns in unerforschte Gewässer.

Unzählige Erweiterungen wurden mit Blick auf die GIL geschrieben. Alle mit CPython gesetzten Standards hängen von der GIL ab. Jeder baut in CPython mit der GIL im Zentrum seiner Programme (entweder absichtlich oder nicht).

Daher macht der Lenkungsrat die GIL zunächst fakultativ, plant aber langfristig, die GIL vollständig abzuschaffen.

In dem Beitrag heißt es: "Wir wollen keine dauerhafte Trennung zwischen Builds (und Erweiterungsmodulen) mit und ohne GIL schaffen."

Dies wird Python völlig verändern, und, was vielleicht am interessantesten ist, auf eine Weise, die noch niemand kennt. Brett Cannon, in einer Umfrage an das Hauptentwicklungsteamschrieb, dass "Python free-threaded zu machen... eine Menge Unbekannte hat. Wir wissen nicht, wie viel Code sich implizit auf die GIL verlässt oder auf subtile Weise unsicher ist, was durch die GIL verschleiert wird."

Die GIL verschwindet - was wird sie mitnehmen?

Und, was noch wichtiger ist, wie wird das neue CPython aussehen?

Hinterlassen Sie einen Kommentar