2016-03-18 13 views
1

Ich habe eine einfache Frage.Wie killt man einen Python-Prozess (Anaconda unter Windows), wenn der Arbeitsspeicher knapp gesättigt ist?

Ich führe oft komplexe Berechnungen in Pandas mit großen Datensätzen durch. Manchmal läuft Python mit RAM mehr und mehr bis zu dem Punkt, wo alles gesättigt ist und mein Computer abstürzt. Ich verwende die Anaconda-Distribution auf einer Windows-Maschine.

Ist es möglich, einen Schwellenwert (sagen wir 98%) so festzulegen, dass der Kernel neu gestartet wird oder der Prozess beendet wird, wenn die RAM-Nutzung über diesen Schwellenwert hinausgeht?

Antwort

1

Es scheint relativ einfach zu Unix-Systemen (https://docs.python.org/2/library/resource.html#resource.setrlimit). Für Windows-Systeme scheint es jedoch keine interne Python-Methode zu geben, die Speichermenge zu begrenzen. Sie müssen sich dann auf die Windows-API verlassen. Soweit ich aus this answer ersehen kann, wäre es am besten, einen Job object zu erstellen und ihn dem Python-Prozess zuzuordnen. Dann würden Sie JOB_OBJECT_LIMIT_JOB_MEMORY verwenden, um den Speicher des Prozesses zu begrenzen. Oder möglicherweise können Sie mit SetProcessWorkingSetSize durchkommen.

Verwandte Themen