2016-08-18 2 views
2

Ich habe ein Subprozess mit gestartet:Python - hung Prozess töten begann subprocess.Popen mit

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) 
output = proc.communicate()[0] 

Manchmal ist der Befehl cmd hängt so auch mein Python-Skript an dieser Stelle hängt.

Ich möchte das für eine Zeit (10 Sekunden?) Laufen lassen und wenn ich keine Antwort bekomme, dann einfach den Prozess beenden und mit meinem Skript weitermachen.

Wie kann ich das tun?

Antwort

2

gesuchte Wenn Sie Python 3 verwenden sind, hat Popen.communicate ein Timeout kwarg:

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) 
output = proc.communicate(timeout=10)[0] 
+0

Wie praktisch. Ich hätte die Dokumentation genauer lesen sollen. – jlconlin

0

Von subprocess documentationproc.terminate() ist, was Sie für

+0

ja, ich kann das tun, aber was kann " Warten Sie 10 Sekunden und wählen Sie dann aufgeben. Wie mache ich das? – jlconlin

Verwandte Themen