Wenn ich einen Prozess mit POpen starten möchte ich die Stderr und Stdout Pipes erfassen. Mein Code funktioniert, hat jedoch eine Racebedingung zwischen dem ausgeführten Prozess und dem umzufüllenden Stream. Dies manifestiert sich durch ein gewisses Ausbluten in die Konsole, bevor es umbrochen wird, wenn der Scheduler zum Python-Programm zurückkehrt.Python Subprozess Capture Stdout Race-Bedingung
# Start process.
proc = subprocess.Popen(cmd_args, env=context, cwd=cwd,
stdout=subprocess.PIPE if capture_out else subprocess.DEVNULL,
stderr=subprocess.PIPE if capture_err else subprocess.DEVNULL,
stdin=None)
# Wrap streams.
out_stream = NonBlockingStreamReader(proc.stdout) if capture_out else None
err_stream = NonBlockingStreamReader(proc.stderr) if capture_err else None
Wie kann ich die Streams einbinden, bevor Sie sie an subprocess.Popen
übergeben?