subprocess.communicate() からのストリーミング出力
Python の subprocess.communicate() 関数は、プロセスの stdout をキャプチャするのに役立ちます。ただし、通常はすべての出力を一度に返します。これは、長期間にわたって出力を生成するプロセスにとっては不都合な場合があります。これに対処するために、プロセスの標準出力の各行をストリーミング形式で出力する手法を検討します。
解決策
反復メカニズムを採用することで、行を取得できます。 stdout になるとすぐにavailable:
from subprocess import Popen, PIPE # Launch a process with buffering set to 1 byte p = Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1) # Iterate over the stdout lines as they become available with p.stdout: for line in iter(p.stdout.readline, b''): print(line, end='') # Wait for the process to terminate p.wait()
説明
補足事項
以上がPython でサブプロセス出力を 1 行ずつストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。