Die Entwickler des Projekts Pyston, das eine hochleistungsfähige Implementierung der Programmiersprache Python mit modernen JIT-Compilation-Technologien bietet, haben die Erweiterung Pyston-lite mit einer Implementierung des JIT-Compilers für CPython vorgestellt. Während Pyston eine Abspaltung vom CPython-Code ist und unabhängig weiterentwickelt wird, ist Pyston-lite als universelle Erweiterung konzipiert, die für die Anbindung an den Standard-Python-Interpreter (CPython) gedacht ist.
Pyston-lite ermöglicht die Nutzung der grundlegenden Technologien von Pyston, ohne den Interpreter zu wechseln, durch die Installation einer zusätzlichen Erweiterung mit Hilfe des Paketmanagers PIP oder Conda. Pyston-lite ist bereits in den Repositories von PyPI und Conda verfügbar und zur Installation genügt der Befehl «pip install pyston_lite_autoload» oder «conda install pyston_lite_autoload -c pyston». Es sind zwei Pakete verfügbar: pyston_lite (direkt JIT) und pyston_lite_autoload (führt die automatische Einfügung von JIT beim Start des Python-Prozesses durch). Es ist auch möglich, JIT programmatisch aus der Anwendung zu aktivieren, ohne das Modul autoload zu installieren, indem die Funktion pyston_lite.enable() verwendet wird.
Obwohl Pyston-lite nicht alle verfügbaren Optimierungen aus Pyston abdeckt, ermöglicht seine Nutzung eine Leistungssteigerung von etwa 10-25 % im Vergleich zu gewöhnlichem Python 3.8. In Zukunft ist geplant, die meisten Optimierungen von Pyston in Pyston-lite zu übertragen sowie die unterstützten Versionen von CPython zu erweitern (die erste Version unterstützt nur Python 3.8). Zu den umfassenderen Plänen gehört die Zusammenarbeit mit dem CPython-Team zur Implementierung neuer APIs für JIT, die eine umfassendere Kontrolle über die Ausführung von Python ermöglichen. Es wird diskutiert, die vorgeschlagenen Änderungen in den Branch Python 3.12 aufzunehmen. Ideal wäre es, die gesamte Funktionalität von Pyston in die Erweiterung zu übertragen, was die Notwendigkeit einer eigenen Fork von CPython überflüssig machen würde.
Neben Pyston-lite wurde auch ein Update für das vollständige Pyston-Paket 2.3.4 veröffentlicht, das neue Optimierungen bietet. Im pyperformance-Test ist die Version 2.3.4 etwa 6 % schneller als die Version 2.3.3. Der Gesamtleistungsgewinn im Vergleich zu CPython wird auf 66 % geschätzt.
Zusätzlich können die im Rahmen des Entwicklungszyklus von CPython 3.11 umgesetzten Optimierungen im Hauptprojekt genannt werden, die in einigen Tests eine Leistungssteigerung von 25 % ermöglichten. Zum Beispiel wurde in CPython 3.11 die Effizienz des Cache für den Bytecode-Zustand grundlegender Module erhöht, was den Start von Skripten um 10-15 % beschleunigt. Der Funktionsaufruf wurde erheblich beschleunigt, und es wurden spezialisierte schnelle Interpreter für typische Operationen hinzugefügt. Auch wird an der Übertragung einiger Optimierungen gearbeitet, die von den Projekten Cinder und HotPy vorbereitet wurden.
Zusätzlich wird im Rahmen des Projekts nogil an einem experimentellen Build-Modus von CPython ohne die globale Interpreter-Sperre (GIL, Global Interpreter Lock) gearbeitet, die den gleichzeitigen Zugriff auf gemeinsame Objekte aus verschiedenen Threads verhindert und somit das Parallelisieren von Operationen auf Mehrkernsystemen behindert. Als eine andere Lösung für das GIL-Problem wird die Möglichkeit entwickelt, an jeden Interpreter, der innerhalb eines Prozesses ausgeführt wird, ein separates GIL zu binden (innerhalb eines Prozesses können mehrere Interpreter ausgeführt werden, aber die Effizienz ihrer parallelen Ausführung wird durch das GIL begrenzt).
Quelle: opennet.ru
