Seite 1 von 1

Speicherverbrauch messen von os.system("<program>

Verfasst: Donnerstag 7. Februar 2008, 17:58
von paulMaier
Hallo liebe Python-Gemeinde,

ich bin auf der Suche nach einem Speichermonitor für einzelne Aufrufe der Art

Code: Alles auswählen

os.system("program|skript|etc.")
Der Hintergrund: der Speicherverbrauch eines in C implementierten Algorithmus soll gemessen werden. Zwar kann ich in den C-Code auch entsprechende Ausgaben einbauen (was ich teils schon getan habe), die dann später geparst werden. Aber ich hätte gerne auch eine externe Messung, die den gesamten Verbrauch anzeigt.

Es existiert bereits eine Lösung von einem gewissen Pádraig Brady, die den Speicherverbrauch von laufenden Prozessen über /proc/<pid>/smaps misst. Ich frage mich aber, ob diese Lösung auch bei kurzen Laufzeiten des Programms funktioniert (<1s), und ob es nicht in Python eine einfachere Lösung für eben einzelne Aufrufe gibt. Die oben beschriebene Lösung ist für laufende Prozesse gedacht (ich kann das Skript posten, falls Interesse besteht), so ähnlich wie ps, top etc.

Meine Frage konkret: Kann mir jemand einen Tip geben, ob der Ansatz über /proc/<pid>/smaps der richtige ist oder es nicht doch eine andere, bessere Lösung gibt?

Vielen Dank fürs Lesen :).

Verfasst: Donnerstag 7. Februar 2008, 18:28
von BlackJack
Also ich würde eher Bibliotheken oder Programme empfehlen, die sich direkt in die Aufrufe von `malloc()` und `free()` einklinken und genau Buch führen wann, wieviel Speicher angefordert wurde.

valgrind wäre zum Beispiel so ein Kandidat.

Verfasst: Montag 11. Februar 2008, 18:28
von paulMaier
Das werde ich mal probieren, danke. Hatte mal von diesem Debugging-Werkzeug gehört, jedoch in diesem Zusammenhang nicht mehr daran gedacht.