Python 3.13: Mehr Performance ohne GIL

Die neue Python-Version bringt einige beachtenswerte Neuerungen mit, die die Geschwindigkeit von Programmen in den meisten Fällen deutlich erhöhen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Lesezeit: 13 Min.
Von
  • Marcus Hanhart
Inhaltsverzeichnis

Python ist bekannt für seine Einfachheit und Vielseitigkeit, nicht jedoch für überragende Geschwindigkeit. Seit einigen Versionen arbeitet ein dediziertes Team gezielt an der Performance bei der Ausführung; in der Version 3.13 zeigen sich die ersten Ergebnisse: ein Just-in-time-Compiler (JIT) und echtes Multithreading (Free Threading). Beide Ansätze schaffen die Grundlage für weitere Optimierungen, bringen aber schon jetzt interessante Verbesserungen mit sich.

Anders als Sprachen wie C oder Rust, bei denen Ahead-of-time-Compiler (AOT) den Code kompilieren, werden dynamische Sprachen wie Python erst zur Laufzeit in Maschinencode übersetzt. Dabei laufen beim Start der Programme wenige Optimierungen, damit sich die Startzeit nicht zu stark verzögert. JIT-Compiler versuchen hier den schnellen Start, die Dynamik und eine schnelle Ausführung zu vereinen. Die neue Python-Version hat diese Technik, die in vielen anderen Programmiersprachen bereits etabliert ist, nun auch integriert – jedoch mit einem wichtigen Unterschied.

iX-tract
  • Python 3.13 verfĂĽgt ĂĽber einen JIT-Compiler, der das Copy-und-Patch-Verfahren fĂĽr eine schnelle und effiziente Codeoptimierung nutzt: Zur Laufzeit werden spezifische Werte in vorgefertigte Maschinencode-Templates eingefĂĽgt.
  • Ferner gibt es eine Variante ohne den Global Interpreter Lock (GIL): Das ermöglicht echte Multithreading-UnterstĂĽtzung und mehr Performance, wenn ein Skript mehrere Kerne nutzt.
  • Während die Performancegewinne durch den JIT-Compiler derzeit ĂĽberschaubar bleiben, sind die Gewinne durch das Free Threading bereits jetzt hoch, fĂĽhren aber noch zu Inkompatibilitäten.

Klassische JIT-Compiler basieren zum Beispiel auf LLVM oder eigens programmierten Tools. Sie erkennen Hotspots bei der Codeausführung, also etwa Teile des Codes, die besonders häufig durchlaufen werden. Ab einem Schwellenwert markieren sie den bisherigen Code für eine Optimierung. Diese selektive Optimierung kostet etwas CPU-Zeit und Arbeitsspeicher, aber der optimierte Code sollte insgesamt zu einer besseren Ausführungsperformance führen.

Das war die Leseprobe unseres heise-Plus-Artikels "Python 3.13: Mehr Performance ohne GIL". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.