Python での Bash サブプロセスによる並列処理
bash サブプロセスの並列実行は、スクリプト作成と自動化における一般的なタスクです。 Python では、サブプロセス モジュールを使用して新しいプロセスを生成し、スレッド モジュールを使用してそれらを同時に実行できます。
ただし、ユーザーがリンクした質問に対する最初の回答で説明されている手法では、次のプロセスが順次実行されます。 bash プロセス。これらを並行して実行するには、次の方法を使用します。
1. multiprocessing.dummy.Pool の使用:
限られた数の同時プロセスで並列実行するには、multiprocessing.dummy.Pool を使用できます。 multiprocessing.Pool.
<code class="python">import multiprocessing.dummy as mp from subprocess import call pool = mp.Pool(2) # Set the maximum number of concurrent commands for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)): if returncode != 0: print("%d command failed: %d" % (i, returncode))</code>
2 に似たスレッドベースのインターフェイスを提供します。手動同時実行制御でのサブプロセスの使用:
スレッドやプロセス プールを使用せずに同時プロセスの数を制限できます。
<code class="python">from subprocess import Popen from itertools import islice max_workers = 2 processes = (Popen(cmd, shell=True) for cmd in commands) running_processes = list(islice(processes, max_workers)) while running_processes: # Check for completed processes and start new ones for i, process in enumerate(running_processes): if process.poll() is not None: running_processes[i] = next(processes, None) if running_processes[i] is None: del running_processes[i] break</code>
3. os.waitpid() でのサブプロセスの使用 (Unix のみ):
Unix システムでは、os.waitpid(-1, 0) を使用して、子プロセスが終了するのをブロックして待機できます。これにより、ビジー ループの必要がなくなります。
これらのメソッドは、Python を使用して bash サブプロセスの同時実行性を制御するための柔軟なオプションを提供します。
以上がBash サブプロセスを Python と並行して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。