Mein Verständnis ist, dass subprocess.Popen ein asynchroner Aufruf ist und Anhängen .wait(), um den Anruf wird es synchron machen. Wird der zweite dieser Popen-Aufrufe ausgeführt, nachdem der erste Anruf abgeschlossen wurde?Legendes Python subprocess popen asynchrone
proc1 = subprocess.Popen(first_command, stdout=subprocess.PIPE, shell=True)
proc2 = subprocess.Popen(second_command, stdin=proc1.stdout, stdout=self.fw, shell=True)
Ich versuche, zu bestimmen, wann es notwendig ist, warten() zu verwenden, und warum es Fehler verursacht, wenn in dem obigen Beispiel popen Anweisungen verwendet, zum Beispiel:
proc1 = subprocess.Popen(first_command, stdout=subprocess.PIPE, shell=True).wait() # throws exception
proc2 = subprocess.Popen(second_command, stdin=proc1.stdout, stdout=self.fw, shell=True).wait() # seems ok