Я хочу использовать многопроцессорный модуль для ускорения работы некоторых моделей планирования транспорта.Я оптимизировал столько, сколько смог, с помощью «нормальных» методов, но в основе этого лежит нелепо параллельная проблема.Например, выполнить один и тот же набор матричных операций с четырьмя 4 различными наборами входов, все независимые данные.
Псевдокод:
for mat1,mat2,mat3,mat4 in zip([a1,a2,a3,a4],[b1,b2,b3,b4],[c1,c2,c3,c4],[d1,d2,d3,d4]):
result1 = mat1*mat2^mat3
result2 = mat1/mat4
result3 = mat3.T*mat2.T+mat4
Так что все, что я действительно хочу сделать, это обработать итерации этогопараллельный цикл на четырехъядерном компьютере.Я читал здесь и в других местах, посвященных многопроцессорному модулю, и, кажется, он идеально подходит под все требования, за исключением необходимого:
if __name__ == '__main__'
Из того, что я понимаю, это означает, что вы можете запускать только многопроцессорный код изскрипт?то есть, если я сделаю что-то вроде:
import multiprocessing
from numpy.random import randn
a = randn(100,100)
b = randn(100,100)
c = randn(100,100)
d = randn(100,100)
def process_matrix(mat):
return mat^2
if __name__=='__main__':
print "Multiprocessing"
jobs=[]
for input_matrix in [a,b,c,d]:
p = multiprocessing.Process(target=process_matrix,args=(input_matrix,))
jobs.append(p)
p.start()
Он работает нормально, однако, предполагая, что я сохранил вышеприведенное как 'matrix_multiproc.py', и определил новый файл 'importing_test.py', который просто заявляет:
import matrix_multiproc
Многопроцессорная обработка не происходит, поскольку имя теперь «matrix_multiproc», а не « main »
Означает ли это, что я никогда не смогу использовать параллельную обработку в импортированном модуле?Все, что я пытаюсь сделать - это запустить мою модель как:
def Model_Run():
import Part1, Part2, Part3, matrix_multiproc, Part4
Part1.Run()
Part2.Run()
Part3.Run()
matrix_multiproc.Run()
Part4.Run()
Извините за очень длинный вопрос, который, вероятно, является простым ответом, спасибо!