私は subprocess.Popen() を使用してプロセスを実行し、それらが終了するのを待ってから他のことを実行しています。単一のプロセスの場合、コードを次の一般的な形式で記述しました。
process = subprocess.pOpen(['command', 'options...', '1> output.txt'])
process.wait()
more code...
そしてそれはうまくいきました。スクリプトは、プロセスが結果を output.txt に出力するのを待ってから、「その他のコード...」に進みました。
ただし、いくつかの同時プロセスを実行するために何をすべきかわかりません。残りのコードに進むには、それらすべてが完了するのを待ちます。待機のロジックがない場合、私のコードは一般的に次のようになります。
for i in range(0, n_streams):
os.system("start /b command [options] 1> output{0}.txt".format(i))
そしてそれはうまくいきます。各プロセスは出力をテキスト ファイルに書き込み、希望どおりに同時に実行されます。先に進む前に、すべてのプログラムがテキスト ファイルに書き込まれるまでプログラムを待機させる方法がわかりません。
私がする必要があるのは、os.system() を pOpen() に置き換えて、単一のプロセスに対して上記で行ったように wait() を使用することだけだと考え続けていますが、これにより、プロセスのインスタンスが順番に実行されるだけです。
私の質問を繰り返します: プロセスの多くのインスタンスを同時に実行し、すべてのインスタンスが終了する (それぞれの出力ファイルに書き込まれる) まで待ってから先に進むにはどうすればよいですか?