Überprüfen Sie die Speicherbelegung des Subprozesses in Python

8


Ich entwickle eine Anwendung in Python auf Ubuntu und ich führe externe Binärdateien innerhalb von Python mit Subprozess. Da diese Binärdateien zur Laufzeit generiert werden und schief gehen können, muss ich die Größe des Speicherbedarfs und die Laufzeit dieser Binärdateien genau festlegen. Gibt es eine Möglichkeit, die Speicherauslastung dieser Binärprogramme zur Laufzeit zu begrenzen oder zu überwachen? Ich würde es wirklich hassen, zu diesem Zweck etwas wie "ps" im Subprozess zu verwenden.

    
Neo 30.09.2010, 12:56
quelle

2 Antworten

4

Wenn Sie eine PID-Nummer Ihres Subprozesses haben, können Sie alle Informationen aus proc file-system . Verwenden Sie:

  

/ proc / [PID] / smaps (seit Linux   2.6.14)       Diese Datei zeigt Speicherverbrauch für jede der Zuordnungen des Prozesses.   Für jede Zuordnung gibt es eine Reihe   von Linien wie folgt:

oder

  

/ proc / [PID] / statm     Stellt Informationen zur Speicherauslastung bereit, die auf Seiten gemessen wird.

Alternativ können Sie die Ressourcen begrenzen, die der Subprozess erhalten kann:

%Vor%

Wenn das Limit für den virtuellen Speicher erreicht wird, schlägt der Prozess fehl, da nicht genügend Arbeitsspeicher zur Verfügung steht.

    
gertas 30.09.2010, 13:05
quelle
10

Sie können Pythons Ressource -Modul verwenden, um Limits festzulegen, bevor Sie Ihren Subprozess erstellen.

Für die Überwachung gibt Ihnen resource.getrusage () zusammengefasste Informationen über alle Ihre Subprozesse. Wenn Sie pro-Subprozess-Informationen sehen möchten, können Sie den / proc-Trick in diesem anderen Kommentar ausführen (nicht portierbar, aber effektiv), oder ein Python-Programm zwischen jedem Subprozess schichten und eine Kommunikation herausfinden (tragbar, hässlich, leicht effektiv) ).

    
Habbie 30.09.2010 13:28
quelle

Tags und Links