AFAIK, es gibt keine portable Möglichkeit, Informationen über die Prozessorzeit zu erhalten, die von einem untergeordneten Prozess in Python verwendet wird. Aber was subprocess
Modul tut (vorausgesetzt, Sie starten das Kind mit subprocess.Popen
, was empfohlen wird) geben Sie die Prozess-ID des untergeordneten Prozesses in Popen.pid
. Was Sie unter Windows tun können, ist tasklist
(siehe manual) wiederholt mit subprocess.check_output
wiederholt und extrahieren Sie die Informationen über die Child-Prozess von seiner Ausgabe, mit der PID als Filter.
Sobald der Kindprozess genügend CPU-Zeit hat und Sie subprocess.Popen()
verwenden, um den Kindprozess zu starten, können Sie die Popen.kill
Methode verwenden, um es zu beenden.
Aber ich denke, es wäre einfacher, den Kindprozess nach einer bestimmten Anzahl von Sekunden Wandzeit mit einem Timer zu töten. Wenn der untergeordnete Prozess hängt, ohne CPU-Zeit zu verwenden (aus welchem Grund auch immer), wird Ihr Python-Programm darauf warten, dass es CPU-Zeit verbraucht.
Es existiert nicht in Windows meines Wissens. Der nächste, den Sie wahrscheinlich erhalten können, ist ein Job (eingeführt mit Windows 2000), den Sie von Ihrem eigenen Prozess aus steuern. Ressourcenlimits in der Art, wie SUS sie definiert, existieren in Windows jedoch nicht. – 0xC0000022L
BTW: Werfen Sie einen Blick auf Process Lasso. Es kann teilweise sein, was Sie interessiert. Die Frage ist, ob es alles bietet, was Sie brauchen ... – 0xC0000022L