Python シミュレーションを同時に数回実行しようとしていますが、実行ごとにパラメーターがわずかに異なります。multiprocessing
これを行うためにモジュールを使用しようとしています。次のようにコードを開始します。基本的なシミュレーションを関数として定義し、パラメーターを引数として使用します。
import multiprocessing
from math import *
def sim_seq(output_name,input_name,s_val...#more arguments):
#do work here
output.write(#data)
output.close()
return
また、シミュレーションの実行ごとに使用するパラメーターを含むテキスト ファイルを作成しました。これを読み込んで、次のループで引数として使用します。ここでは、マルチプロセッシングを使用しようとしています。
input_batch=('batch_file.txt')
if __name__ == '__main__':
jobs=[]
with open(input_batch) as f:
for line in f:
line=line.split(' ')
for i in line:
if i[0]=='o':
output_name=str(i[2:])
#read in more parameters from batch_file.txt
p = multiprocessing.Process(
target=sim_seq,
args=(output_name,input_name,s_val...#more arguments))
jobs.append(p)
for i in jobs:
i.start()
これは本質的に私がやりたいことを達成し、それぞれ異なるパラメーターで一度に 3 つのシミュレーションを実行します。ただし、私が使用しているマシンには、1 ノードあたり 32 のプロセッサを使用できる 16 の計算ノードがあります。各シミュレーションが実行される場所を制御する方法を知りたいです。たとえば、各プロセッサに個別のシミュレーションを実行するように指示できますか? マルチプロセッシングの使用は初めてで、どのプロセッサまたはどのノードが何をするかを知る方法を知りたいです。32 の個別のパラメーター設定を使用して、シミュレーションの 32 の各インスタンスを独自のプロセッサで実行しながら、すべてを同時に実行することはできますか? マルチプロセッシングを使用して、同じ python 関数を複数回同時に実行するための計算上最速の方法は何でしょうか。ただし、実行ごとに異なる引数を使用しますか? ご意見/アドバイスをお寄せいただきありがとうございます。