2016-04-27 3 views

Antwort

3

subprocess.call erstellt bei jedem Aufruf einen Prozess und wartet auf den Abschluss des Befehls. Aufgrund der Art, auf den Befehl zu warten, gibt es keine echte Parallelverarbeitung.

subprocess.Popen erstellt auch jedes Mal einen Prozess, wenn es aufgerufen wird, aber nicht auf den Abschluss des Befehls warten. Sie können communicate verwenden, um auf den Abschluss des Befehls zu warten oder kill aufzurufen.

Also zusammenfassen. Mit subprocess.Popen haben Sie mehr Kontrolle über den von Ihnen erstellten Prozess.

im python documentation

+0

Beschrieben Wenn ich will nur einen Befehl, os.system und subprocess.call auszuführen, die ein vorzuziehen ist? –

+0

Beachten Sie, dass es in Python 3.5 eine neue ** run ** -Funktion gibt, die das gleiche macht. –

+0

Wenn Sie nur einen Befehl ausführen und warten möchten, bis er abgeschlossen ist, sollte "subprocess.call" in Ordnung sein;) – salomonderossi

1

Ja, ein neuer Prozess wird jedes Mal ausgelöst, wenn Sie subprocess.call() oder eines seiner Verwandten anrufen, einschließlich Popen(). Sie müssen die Subprozesse normalerweise nicht explizit beenden - Sie warten nur darauf, dass sie beendet werden.