2009-09-30 28 views
9

Mein Team integriert die Python 2.4.4-Laufzeit in unser Projekt, um einige extern entwickelte Funktionen zu nutzen.Anleitung zur Optimierung der Python-Laufzeit für eingebettete Systeme mit geringen Systemressourcen

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

Wir Python portiert, aber erste Tests hat folgende Hürden hervorgehoben:

a) Startzeiten für die Python-Laufzeit als 25 Sekunden so schlecht sein (wenn die Bibliotheken betrifft den Import und wiederum ihre Abhängigkeiten)

b) Python scheint nie Speicher an das Betriebssystem während der Garbage collection zu lösen - die einzige Möglichkeit ist, die Laufzeit zeit~~POS=HEADCOMP und Neustart (anfallenden Anlaufverzögerungen oben erwähnt, die oft unpraktisch ist)

schließen Wenn wir diese Probleme mildern können, würde unser Einsatz von Python wesentlich verbessert werden. Jede Anleitung von der SO-Community wäre sehr wertvoll. Vor allem von jedem, der die Grundlagen der Funktionsweise der Python-Ausführungsengine kennt.

Antwort

5

Vielleicht ist es schwer zu glauben, aber CPython Version 2.4 never releases memory to the OS. Dies wird angeblich in Version Python 2.5 behoben.

Darüber hinaus wurde die Leistung (Prozessor-weise) in Python 2.5 und Python 2.6 darüber hinaus verbessert.

Siehe C API section in What's new in Python 2.5, für die Evan Jones Patch

Alex Martelli genannt Artikel suchen (dessen Rat immer zumindest in Betracht gezogen werden sollte) auf obmalloc, says multiprocess is the only way to go to free memory. Wenn Sie nicht multiprocessing (Modul in Python 2.6) verwenden können, os.fork ist 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 Wiederaufladen des Interpreters, der 25 Sekunden dafür bezahlt.

+0

Wir werden versuchen, zu Python 2.6 übergehen und auch den Patch anwenden und bald über das Ergebnis berichten. Vielen Dank. Alle Ideen, wie Sie die Modulimport- und Initialisierungsleistung optimieren können, wären auch von Vorteil, wenn Sie irgendwelche Erkenntnisse dazu haben, obwohl ich vermute, dass dies stark von der Art der zu ladenden Module abhängt . – sototozo

+0

wenn ich könnte, würde ich rep für eine Prämie für diese Frage spenden. – u0b34a0f6ae

Verwandte Themen