Pyston-lite, JIT-Compiler für Standard-Python eingeführt

Die Entwickler des Pyston-Projekts, das eine leistungsstarke Implementierung der Python-Sprache mithilfe moderner JIT-Kompilierungstechnologien bietet, stellten die Pyston-lite-Erweiterung mit einer Implementierung des JIT-Compilers für CPython vor. Während Pyston ein Zweig der CPython-Codebasis ist und separat entwickelt wird, ist Pyston-lite als universelle Erweiterung für die Verbindung mit dem Standard-Python-Interpreter (CPython) konzipiert.

Mit Pyston-lite können Sie die grundlegenden Pyston-Technologien nutzen, ohne den Interpreter zu ändern, indem Sie eine zusätzliche Erweiterung mithilfe des PIP- oder Conda-Paketmanagers installieren. Pyston-lite ist bereits in den PyPI- und Conda-Repositorys gehostet. Zur Installation führen Sie einfach den Befehl „pip install pyston_lite_autoload“ oder „conda install pyston_lite_autoload -c pyston“ aus. Es werden zwei Pakete empfohlen: pyston_lite (direkt JIT) und pyston_lite_autoload (führt automatische JIT-Ersetzung beim Starten eines Python-Prozesses durch). Mit der Funktion pyston_lite.enable() ist es auch möglich, die Aktivierung von JIT innerhalb der Anwendung programmgesteuert zu steuern, ohne das Autoload-Modul zu installieren.

Obwohl Pyston-lite nicht alle in Pyston verfügbaren Optimierungen abdeckt, kann seine Verwendung die Leistung im Vergleich zu regulärem Python 10 um etwa 25–3.8 % verbessern. Für die Zukunft ist geplant, die meisten in Pyston vorhandenen Optimierungen auf Pyston-lite zu übertragen und die unterstützten Versionen von CPython zu erweitern (die erste Version unterstützt nur Python 3.8). Zu den globaleren Plänen gehört die Zusammenarbeit mit dem CPython-Team zur Implementierung neuer APIs für JIT, die eine umfassendere Kontrolle über die Arbeit von Python ermöglichen. Die Aufnahme der vorgeschlagenen Änderungen in den Python 3.12-Zweig wird derzeit diskutiert. Idealerweise wird die Möglichkeit in Betracht gezogen, die gesamte Funktionalität von Pyston in die Erweiterung zu verlagern, wodurch wir die Wartung unseres eigenen CPython-Forks vermeiden können.

Zusätzlich zu Pyston-lite veröffentlichte das Projekt auch ein Update des vollwertigen Pakets Pyston 2.3.4, das neue Optimierungen bietet. Im Pyperformance-Test ist Version 2.3.4 um etwa 2.3.3 % schneller als Version 6. Der Gesamtleistungsgewinn im Vergleich zu CPython wird auf 66 % geschätzt.

Darüber hinaus können wir die im Rahmen des CPython 3.11-Entwicklungszyklus im Hauptprojekt entwickelten Optimierungen feststellen, die in einigen Tests eine Leistungssteigerung um 25 % ermöglichten. In CPython 3.11 wurde beispielsweise die Effizienz der Zwischenspeicherung des Bytecode-Status von Basismodulen erhöht, was den Start von Skripten um 10–15 % beschleunigt. Funktionsaufrufe wurden deutlich beschleunigt und spezialisierte schnelle Interpreter von Standardoperationen hinzugefügt. Außerdem wird daran gearbeitet, einige von den Projekten Cinder und HotPy vorbereitete Optimierungen zu portieren.

Darüber hinaus wird im Rahmen des Nogil-Projekts an einem experimentellen Modus zum Erstellen von CPython ohne globale Interpretersperre (GIL, Global Interpreter Lock) gearbeitet, der keinen parallelen Zugriff auf gemeinsam genutzte Objekte aus verschiedenen Threads ermöglicht, was die Parallelisierung von Operationen auf mehreren verhindert -Kernsysteme. Als weitere Lösung des GIL-Problems wird die Möglichkeit entwickelt, an jeden Interpreter, der innerhalb eines Prozesses läuft, eine separate GIL zu binden (mehrere Interpreter können in einem Prozess laufen, aber die Effizienz ihrer parallelen Ausführung hängt von der GIL ab).

Source: opennet.ru

Kommentar hinzufügen