Я пытаюсь запустить симуляцию Python несколько раз одновременно, но с немного разными параметрами в каждом прогоне. Я пытаюсь использовать модуль multiprocessing
для этого. Я начинаю свой код, как это, где у меня есть основное моделирование определяется как функция, с параметрами в качестве аргументов:многопроцессорных одновременных скриптов python эффективно
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 несколько раз одновременно, но с разными аргументами для каждого запуска? Заранее благодарим за любой вклад/совет.