Ho bisogno di avviare una serie di processi di lunga durata con subprocess.Popen
, e vorrei avere il stdout
e stderr
da ogni piped automaticamente per separare i file di registro. Ogni processo verrà eseguito contemporaneamente per diversi minuti e desidero scrivere due file di registro (stdout
e stderr
) per processo durante l'esecuzione dei processi.output di piping di sottoprocesso.Popen a file
Devo chiamare continuamente p.communicate()
su ogni processo in un ciclo al fine di aggiornare ogni file di log, o c'è qualche modo per richiamare il comando originale Popen
in modo che stdout
e stderr
sono in streaming automaticamente per aprire handle di file?
Grazie. Avrei potuto giurare di averlo provato prima e ho avuto un errore, ma è esattamente quello che speravo funzionasse. –
Questo non funziona per me. Sono contemporaneamente in esecuzione due processi e salvo lo stdout e lo stderr da entrambi in un unico file di registro. Se l'output diventa troppo grande, uno dei subprocessi si blocca; non so quale. Non riesco a utilizzare la formattazione in un commento, quindi aggiungerò una "risposta" di seguito. – jasper77