我正在尝试同时多次运行 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()
这基本上完成了我想要它做的事情,它一次运行三个模拟,每个模拟都有不同的参数。然而,我使用的机器有 16 个计算节点,每个节点有 32 个处理器。我想知道如何控制每个模拟的运行位置。例如,我可以告诉每个处理器运行单独的模拟吗?我是使用多处理的新手,我想知道如何判断哪个处理器或哪个节点要做什么。我可以有 32 个单独的参数设置,并在自己的处理器上运行每个 32 个模拟实例,但同时运行吗?使用多处理,同时运行同一个 python 函数但每次运行使用不同参数的最快计算方法是什么?提前感谢您的任何意见/建议。