サブプロセスの出力を実際に待たずに簡単に集める方法はありますか?サブプロセス出力をPythonで非ブロック化する
subprocess.Popen()
を作成してstdoutをキャプチャした後、p.communicate()
を呼び出しても構いませんが、サブプロセスが終了するまでブロックされます。
私はsubprocess.check_output()
などと考えても構いませんが、それもブロックされます。
私は何かを始めることができますし、次に他のものを行い、次にサブプロセスが終了していることを確認してください。
私はこれを達成するには、2つのかなり複雑な方法を考えることができます。
- その後、終了後、私はそのファイルからの出力を読み取ることができ、出力をファイルにリダイレクトします。
- サブプロセスのstdoutから常にデータを読み込み、バッファに追加するハンドラスレッド(!)を実装して起動します。
私の場合、最初のファイルとディスクI/Oは本当に好きではありません。 2つ目はかなりの実装です。
私はまだ考えられなかった簡単な方法、または私がまだ見つけなかったライブラリのすぐに使用される解決策があるかもしれないと思います。
のようなものを試してみてください。あなたは例が必要ですか? –