Anleitung zur Optimierung der Python-Laufzeit für eingebettete Systeme mit geringen Systemressourcen

9

Mein Team integriert die Laufzeit von Python 2.4.4 in unser Projekt, um einige extern entwickelte Funktionen zu nutzen.

Unsere Plattform verfügt über einen 450 MHz SH4-Anwendungskern und einen begrenzten Speicher für Python-Laufzeit und -Anwendung.

Wir haben Python portiert, aber erste Tests haben die folgenden Hürden hervorgehoben:

a) Die Startzeiten für die Python-Laufzeit können bis zu 25 Sekunden betragen (beim Importieren der betroffenen Bibliotheken und damit ihrer Abhängigkeiten)

b) Python scheint während der Speicherbereinigung niemals Speicher für das Betriebssystem freizugeben - die einzige Möglichkeit besteht darin, die Laufzeit zu schließen und neu zu starten (was oben erwähnte Startverzögerungen zur Folge hat, was oft unpraktisch ist)

Wenn wir diese Probleme abschwächen können, wäre unsere Verwendung von Python wesentlich verbessert. Jede Anleitung von der SO-Community wäre sehr wertvoll. Vor allem von jedem, der die Grundlagen der Funktionsweise der Python-Ausführungsengine kennt.

    
sototozo 30.09.2009, 08:25
quelle

1 Antwort

5

Vielleicht ist es schwer zu glauben, aber CPython Version 2.4 gibt niemals Speicher für das Betriebssystem frei . Dies wird angeblich in Version Python 2.5 behoben.

Zusätzlich wurde die Leistung (Prozessor-weise) in Python 2.5 und Python 2.6 zusätzlich verbessert.

Weitere Informationen finden Sie im Abschnitt C-API unter Was ist neu in Python 2.5? , suche nach dem Gegenstand namens Evan Jones 'Patch zu obmalloc

Alex Martelli (dessen Rat immer in Betracht gezogen werden sollte), sagt multiprocess ist die einzige Möglichkeit, um Speicher freizugeben. Wenn Sie multiprocessing (Modul in Python 2.6) nicht verwenden können, ist os.fork mindestens verfügbar. Die Verwendung von os.fork auf primitivste Art und Weise (einen Workprozess am Anfang abwarten, darauf warten, dass es fertig ist, fork a new ..) ist immer noch besser als das erneute Auslesen des Interpreters, der 25 Sekunden dafür bezahlt.

    
u0b34a0f6ae 30.09.2009, 09:25
quelle