Anlagestrategie Juristische Nachrichten

Python vor 3.12: Mehrere Interpreter in einem Prozess ohne GIL-Engpass

Eine tiefgehende Analyse darüber, wie vor Python 3. 12 in einem einzigen Prozess mehrere Python-Interpreter parallel laufen können, ohne dass der Global Interpreter Lock (GIL) zu Flaschenhälsen führt.

Python vor 3.12: Mehrere Interpreter in einem Prozess ohne GIL-Engpass

Python ist eine der beliebtesten Programmiersprachen weltweit, doch ihre Verwendung in Multithreading-Szenarien stößt häufig auf ein bekanntes Problem: den Global Interpreter Lock, kurz GIL. Dieser sorgt dafür, dass zwar mehrere Threads existieren können, aber nur einer zur gleichen Zeit Python-Code ausführen darf. Das stellt eine Herausforderung dar, wenn man in einem einzigen Prozess mehrere Python-Interpreter parallel betreiben möchte, insbesondere bei Robotik- und Steuerungssoftware, die auf Performance angewiesen ist. Vor der Veröffentlichung von Python 3. 12 war diese Herausforderung untrennbar mit dem GIL verbunden und stellte Entwickler vor erhebliche Probleme. Doch es gibt bemerkenswerte technische Ansätze und Umgehungslösungen, die zeigen, dass man auch mit älteren Python-Versionen mehrere Interpreter in einem Prozess ohne GIL-Contention nutzen kann. Basis, ein innovatives Framework für Robotersoftware, ist ein Beispiel für solche Entwicklungen.

Das GIL-Problem ist bekannt: Python erlaubt zwar Multithreading, aber der GIL verhindert, dass mehrere Threads gleichzeitig nativen Python-Bytecode ausführen. Dies führt schnell zu Engpässen bei parallelen CPU-intensiven Aufgaben. Besonders problematisch ist es, wenn man Subinterpreters einsetzen möchte. Diese wurden eingeführt, um mehrere unabhängige Python-Umgebungen im selben Prozess zu erlauben, teilen sich aber dennoch den GIL. Somit verhindert der GIL effektives paralleles Ausführen in einem einzigen Prozess mit mehreren Interpreter-Instanzen. Die Architektur von Basis verfolgt einen anderen Ansatz. Anstatt verschiedene Prozesse durch Shared-Memory-Segmente zu verbinden, lädt Basis alles in denselben Speicherraum und teilt Objekte via smart pointers. Das reduziert Overhead durch Interprozesskommunikation und ermöglicht nahezu zero-copy-Kommunikation.

In der Praxis bedeutet das eine verbesserte Performance für komplexe Robotiksoftware, die mehrere Pipelines parallel ausführt – wie Wahrnehmung, Planung und Steuerung – alles innerhalb eines einzigen Prozesses. Die Herausforderung war, wie mehrere Python-Interpreter in diesem Modell gestartet werden können, ohne dass sie sich gegenseitig blockieren oder crashen. Per Standard verhält sich Python so, dass Py_Initialize nur einmal pro Prozess aufgerufen werden kann. Versucht man, es zweimal zu initialisieren, kommt es zum Abbruch mit Fehlermeldung. Subinterpreters via Py_NewInterpreter schaffen zwar neue Umgebungen, teilen aber den GIL, was die ursprüngliche Problematik nicht löst. Die erste Inspiration zur Lösung kam aus dem Linux-Werkzeugkasten, genauer gesagt aus dem dynamischen Laden von Bibliotheken. Normalerweise nutzt man dlopen, um shared objects (. so-Dateien) zu laden. Dabei bekommt man aber stets denselben Namespace.

Mehrere dlopen-Aufrufe laden dieselbe Bibliothek nicht neu, sondern liefern denselben Handle zurück. Das bedeutet auch, dass die Python-Bibliothek nicht mehrfach unabhängig geladen werden kann. Ein möglicher Workaround wäre, Kopien der Library umzubenennen und separat zu laden, aber das ist wenig praktikabel und führt zu komplexen Abhängigkeitsproblemen. Der entscheidende Durchbruch erfolgte durch den Einsatz von dlmopen, einer Technik, die Linux-spezifisch ist. dlmopen erlaubt es, Bibliotheken in separaten Link-Namespaces zu laden. Mit LM_ID_NEWLM als Namespace-Parameter kann jede Python-Interpreter-Instanz ihre eigene, isolierte Version der Python-Laufzeit erhalten, unabhängig von anderen im selben Prozess. Das Wichtigste dabei: keine symbolischen Überschneidungen und keine unerwünschte gemeinsame Nutzung von globalem Zustand. Das Ergebnis war beeindruckend: Mehrere Units, die Python-Interpreter enthalten, konnten parallel gestartet werden.

Jeder Interpreter agierte unabhängig mit seiner eigenen Initialisierung, und die bekannte Absturzproblematik durch Mehrfachinitialisierungen löste sich auf. Dies war ein wichtiger Schritt dahin, mehrere Interpreter innerhalb eines einzigen Prozess-Images sinnvoll einzusetzen. Allerdings stellte sich bald heraus, dass dies noch nicht die ideale Lösung war. Zum Beispiel ist das Teilen von Komponenten wie statischen Variablen, die Basis für Kommunikation oder Logging nutzen, schwierig. Statische Variablen werden pro Namespace isoliert, was Integrationsprobleme verursacht. Ebenso bleiben Probleme mit Thread-Lokalen bestehen, da jede Namespace-Version von glibc und deren Thread-Lokalen unterschiedlich agiert. Besonders auffällig wurde dieser Effekt, als Python-Threads in verschiedenen Interpretern außerhalb des Hauptthreads gestartet werden sollten. Dabei trat neues, hartnäckiges Fehlverhalten auf, das die Implementierung infrage stellte.

Nach intensiver Fehlersuche zeigt sich der Kern des Problems in der glibc-Integration: Python nutzt intensiv Thread-Lokale Speicher (TLS) für interne Zustände und Synchronisation. Wird glibc mehrfach separat geladen, gibt es unterschiedliche TLS-Bereiche, die nicht miteinander kompatibel sind. Dies führt zu Inkonsistenzen und Abstürzen, die sich kaum debuggen lassen. Der Lösungsansatz bestand darin, eine Art Shim zu programmieren, der bestimmte pthread-Funktionen von der Haupt- bzw. Baseline-Namespace in die neue Python-Instanz durchreicht. Konkret wurde eine Struktur mit Funktionzeigern erstellt, die auf die Original-pthread-Funktionen zeigen. Diese werden dann in der isolierten Namespace implementiert, sodass alle Thread-bezogenen Operationen über die einzig gültige glibc-Schnittstelle laufen. So wird thread-lokaler Zustand konsistent gehalten und das Mehrfach-Interpreter-Modell funktioniert auch mit Threads.

Diese Technik ist allerdings komplex und erfordert tiefes Verständnis von Linux-Dynamik, Threading und C++-Symbolmanagement. Beispielhaft dafür sind Makros, die in Headern Funktionszeiger definieren, und im Konstruktor mit dlsym gefüllt werden. Damit lassen sich Python-APIs nahtlos shimen, ohne dass die eigentliche Python-Binary oder pybind11 direkt gelinkt oder mehrfach geladen wird. Ein weiteres technisches Detail betrifft die Verwendung von Lokalisation (Locale). C- und C++-Funktionen wie islower oder ähnliche Verhaltensweisen hängen vom eingestellten Locale ab. Dieses kann ebenfalls thread-lokal sein und sorgt mitunter für Abstürze bei Python-Modulen wie numpy, wenn die Locale unterschiedlich oder inkonsistent pro Thread gesetzt ist. Die Lösung war, thread-lokale Locale-Varianten zu ersetzen oder global konsistent zu initialisieren. Dieses Vorgehen ist nicht nur akademisch interessant, sondern hat praktische Auswirkungen für Softwareentwicklung im Robotik-Kontext.

Hier ist Performance und Ressourcenoptimierung entscheidend, und mehrere Python-Interpreter in nur einem Prozess eröffnen neue Möglichkeiten bei der Parallelisierung von Steuerungs- und Wahrnehmungsalgorithmen. Ein weiterer Vorteil ist, dass sich mit dlmopen-Namespaces gewisse Isolationsgrad zwischen Erweiterungen oder Modulen erzielen lässt, was klassische Shared-Memory-Segmente überflüssig macht und potentiell Komplexität reduziert. Gleichzeitig sollte man sich der Grenzen bewusst sein. Linux und glibc begrenzen die Anzahl der verfügbaren Link-Namespaces auf etwa 16, was nur ca. 15 separate Python-Interpreter erlaubt. Erweiterungen darüber hinaus sind möglich, bedürfen aber tiefer Eingriffe in die Systembibliothek, die nicht trivial sind und die Systemstabilität gefährden können. Außerdem bringt das manuelle Management von Thread-Lokalen, Shims und lokalen Funktionstöpfen einen erheblichen Wartungsaufwand mit sich. Fehler sind komplex und schwer nachvollziehbar.

Während dieser experimentelle Ansatz vor allem vor Python 3. 12 relevant war, zeigen die Entwicklungen im aktuellen Python, dass Subinterpreters mit eigenem GIL ab Version 3. 12 viele Probleme lösen. Das macht diesen Aufwand für neue Projekte unnötig. Doch in der Praxis halten sich viele Robotikprojekte und Pipelines noch auf älteren Python-Versionen auf, da zahlreiche Abhängigkeiten und Drittbibliotheken nicht zeitnah aktualisiert werden. Basis hat sich inzwischen entschlossen, auf Python 3. 12 mit modernisierten Subinterpreters zu setzen. Diese modernere Lösung ermöglicht echte Parallelität dank unabhängiger GILs, während die Kompatibilität mit rospy und anderen Robotik-Nachrichten durch einfache PYTHONPATH-Konfigurationen erleichtert wird. Dennoch sind die Erfahrungen mit dlmopen und Namespace-Shimming weiterhin wertvoll, etwa für Legacy-Systeme oder andere Szenarien, in denen Isolation innerhalb eines Prozesses erforderlich ist.

Neben den technischen Herausforderungen zeugen auch Debugging-Erfahrungen von den Schwierigkeiten beim Einsatz von dlmopen. So unterstützen Debugger wie lldb standardmäßig keine symbolischen Stack-Traces für Module, die in eigenen Link-Namespaces geladen wurden. Man muss daher per Scripts selber die Basisadresse aus /proc nehmen und die Module manuell „sliden“, um lesbare Call-Stacks zu erhalten. GDB unterstützt das im Gegensatz dazu seit Version 13. 1 schon automatisch. Solche Details sind wichtig, damit Entwickler später Bugs finden und verstehen können. Abschließend zeigt sich: Mehrere Python-Interpreter in einem Prozess ohne GIL-Contention vor Python 3. 12 sind technisch möglich, aber komplex und mit vielen Hürden verbunden. Der Einsatz von dlmopen und Namespace-Shimming stellt einen mutigen und originellen Weg dar, der sowohl starkes Linux-Know-how als auch gründliches Verständnis der Python-Internals und glibc erfordert.

Für Entwickler im Bereich Robotik und Performance-kritischer Applikationen kann dieser Ansatz eine spannende Option sein, besonders wenn ein Upgrade auf neuesten Python-Versionen nicht möglich ist. Langfristig empfehlen sich jedoch moderne Python-Feature-Sets, die native Lösungen anbieten. Die Erfahrungen aus dieser Arbeit können darüber hinaus für die allgemeine Softwareentwicklung lehrreich sein, wenn es um die Isolierung von Modulen, Plugin-Architekturen und das Management von gemeinsam genutzten Ressourcen in großen Anwendungen geht. Sie zeigen eindrucksvoll, wie vielschichtig und herausfordernd Multithreading in interpretierten Sprachen ist und wie viel Kreativität und tiefes Systemverständnis notwendig sind, um performante und stabile Mehrfach-Interpreter-Systeme zu realisieren.

OKX Partnerinhalte

Registrieren Sie sich bei OKX und erhalten Sie Ihren Willkommensbonus

OKX ist eine Plattform für Spot- und Futures-Handel, P2P-Tausch und Krypto-Sparpläne. Ein neues Konto über diesen Link eröffnet Zugang zum Willkommensbonus-Programm: bis zu 10.000 USDT für Ihre ersten Schritte an der Börse.

Konto erstellen und Bonus erhalten →

18+ · Partnerlink. Kryptowährungen sind volatil: Sie können Ihre Einlage verlieren.

Als Nächstes
Südkoreas Verfassungsgericht trifft wegweisende Entscheidung im Präsidentschaftsprozess vor den Wahlen
Samstag, 14. November 2026. Südkoreas Verfassungsgericht trifft wegweisende Entscheidung im Präsidentschaftsprozess vor den Wahlen

Die politische Landschaft Südkoreas befindet sich in einer unruhigen Phase, da das höchste Gericht des Landes bald eine Entscheidung in einem weitreichenden Fall treffen wird, der den führenden Kandidaten für die bevorstehenden Präsidentschaftswahlen betrifft. Diese Entscheidung hat das Potenzial, die politische Stabilität Südkoreas zu beeinflussen und weitreichende Auswirkungen auf das Vertrauen der Bevölkerung in das demokratische System zu haben.

Bitcoin verstehen: Warum Kryptowährung heute unverzichtbar ist
Samstag, 14. November 2026. Bitcoin verstehen: Warum Kryptowährung heute unverzichtbar ist

Bitcoin ist mehr als nur eine digitale Währung – es ist ein Symbol für den technologischen Fortschritt und eine Revolution im weltweiten Finanzsystem. Seit seiner Einführung Anfang der 2010er Jahre hat Bitcoin eine bemerkenswerte Entwicklung durchgemacht, von einem abstrakten Konzept für Tech-Enthusiasten hin zu einer akzeptierten Anlageform mit einem globalen Marktwert, der Billionen von Dollar umfasst.

Trumps 80-prozentiger Anteil an seinem Memecoin: Ein Warnsignal für Investoren mit potenziell schwerwiegenden Folgen
Samstag, 14. November 2026. Trumps 80-prozentiger Anteil an seinem Memecoin: Ein Warnsignal für Investoren mit potenziell schwerwiegenden Folgen

Im Januar 2025, kurz vor seiner Amtseinführung, sorgte Donald Trump für Schlagzeilen, indem er seinen eigenen Memecoin namens $TRUMP auf den Markt brachte. Innerhalb kürzester Zeit entwickelte sich diese Kryptowährung für Trump zu einer lukrativen Einnahmequelle und verwandelte ihn quasi über Nacht in einen Krypto-Milliardär.

Nahtlose Beschleunigung von Fortran-Intrinsics durch AMD AI Engines: Ein Durchbruch für HPC und wissenschaftliches Rechnen
Samstag, 14. November 2026. Nahtlose Beschleunigung von Fortran-Intrinsics durch AMD AI Engines: Ein Durchbruch für HPC und wissenschaftliches Rechnen

Die Welt des Hochleistungsrechnens (High-Performance Computing, HPC) steht heute vor einer bedeutenden Herausforderung, die Leistungsfähigkeit wissenschaftlicher Anwendungen stetig zu verbessern und gleichzeitig nachhaltige, energieeffiziente Lösungen zu gewährleisten. In diesem Kontext gewinnt die Beschleunigung von Fortran-Intrinsics durch spezialisierte Hardware wie die AMD AI Engines zunehmend an Bedeutung.

Ripple bleibt privat: Kein Börsengang für 2025 trotz starkem Wachstum
Samstag, 14. November 2026. Ripple bleibt privat: Kein Börsengang für 2025 trotz starkem Wachstum

Ripple, eines der führenden Unternehmen im Bereich Blockchain-basierter Zahlungslösungen, hat offiziell bestätigt, dass es im Jahr 2025 keinen Börsengang (IPO) anstreben wird. Diese Entscheidung kommt trotz des anhaltenden Wachstums und der starken finanziellen Position des Unternehmens.

PDD Holdings im Kurssturz: Warum die enttäuschenden Quartalsergebnisse von Temus Muttergesellschaft für Anleger alarmierend sind
Samstag, 14. November 2026. PDD Holdings im Kurssturz: Warum die enttäuschenden Quartalsergebnisse von Temus Muttergesellschaft für Anleger alarmierend sind

PDD Holdings, bekannt als Muttergesellschaft der erfolgreichen Online-Shopping-Plattform Temu, hat Anfang 2025 mit seinen ersten Quartalsergebnissen für einige negative Schlagzeilen gesorgt. Die letzte Veröffentlichung zeigt, dass die Umsätze und das angepasste Ergebnis je American Depositary Share (ADS) die Erwartungen der Analysten deutlich verfehlt haben.

Stalwart v0.12: Die Revolution für Kalender, Kontakte und Dateiverwaltung in einer Plattform
Samstag, 14. November 2026. Stalwart v0.12: Die Revolution für Kalender, Kontakte und Dateiverwaltung in einer Plattform

Stalwart hat mit der Veröffentlichung von Version 0. 12 einen großen Schritt in Richtung einer vollintegrierten Kommunikationsplattform gemacht.

Weitere Artikel zum Thema
500.000 Dollar Altersvorsorge: So viel können Sie jährlich sicher ausgeben
Samstag, 14. November 2026. 500.000 Dollar Altersvorsorge: So viel können Sie jährlich sicher ausgeben

Viele Menschen träumen davon, mit ausreichenden Ersparnissen entspannt ihren Ruhestand zu genießen. Ein gängiger Richtwert für ein solides finanzielles Polster im Alter liegt zwischen 500.

Warum DOGE und SHIB trotz Elon Musks süßer Hunde-Posts weiter fallen
Freitag, 13. November 2026. Warum DOGE und SHIB trotz Elon Musks süßer Hunde-Posts weiter fallen

Im März 2025 sorgte Elon Musk erneut für Aufsehen, als er auf der Social-Media-Plattform X, früher bekannt als Twitter, ein Bild mit mehreren Hunden und Münzen postete. Darunter befand sich auch eine Darstellung des Shiba Inu, der ikonische Hund, der als Vorlage für diverse Meme-Coins wie Dogecoin (DOGE) und Shiba Inu (SHIB) dient.

SEC plant Klage gegen Coinbase, laut Börse - The Wall Street Journal: Kreative Schlagzeile.
Freitag, 13. November 2026. SEC plant Klage gegen Coinbase, laut Börse - The Wall Street Journal: Kreative Schlagzeile.

Die US-amerikanische Börsenaufsicht SEC plant angeblich eine Klage gegen die beliebte Kryptowährungsbörse Coinbase einzureichen, wie aus einem Bericht der renommierten Zeitung The Wall Street Journal hervorgeht. Die Vorbereitungen für die rechtliche Auseinandersetzung sollen bereits im Gange sein, obwohl der genaue Grund für die potenzielle Klage noch nicht veröffentlicht wurde.

Die Zukunft der Kryptowährung: 2024 und darüber hinaus - The Motley Fool enthüllt
Freitag, 13. November 2026. Die Zukunft der Kryptowährung: 2024 und darüber hinaus - The Motley Fool enthüllt

Im Jahr 2024 und darüber hinaus steht die Zukunft der Kryptowährungen im Mittelpunkt der Diskussionen. Die Volatilität und das Potenzial dieser digitalen Währungen stehen im Fokus von Experten und Anlegern gleichermaßen.