Pythonのsubprocess
モジュールは、新規プロセスを立ち上げて、そのプロセスと通信を行うための強力な方法を提供しています。特に、subprocess.Popen()
を用いると、複数のプロセス(サブプロセス)を生成し、それらを並列に実行することが可能です。
以下に、subprocess.Popen()
を用いた複数プロセスの生成と管理の基本的なコードを示します。
import subprocess
# 並列プロセス実行数の最大値
max_process = 16
proc_list = []
loop_num = 64
for i in range(loop_num):
proc = subprocess.Popen(['python', 'your_script.py', str(500000 + i)])
proc_list.append(proc)
if (i + 1) % max_process == 0 or (i + 1) == loop_num:
# max_process毎に、全プロセスの終了を待つ
for proc in proc_list:
proc.wait()
proc_list = []
このコードでは、指定した数のプロセスを並列に実行し、それらが全て終了するのを待つという処理を行っています。これにより、大量のタスクを効率的に並列処理することが可能となります。
なお、subprocess.run()
はsubprocess.Popen()
の上位互換で、より簡易的な記述でプロセスの生成と実行を行うことができます。しかし、複雑な処理や細かな制御が必要な場合は、subprocess.Popen()
を使用することが推奨されています。
以上、Pythonとsubprocessを用いた複数プロセスの管理について解説しました。これらの知識を活用して、Pythonでの並列処理を効率的に行うことができます。