我希望使用多处理模块来加快某些运输规划模型的运行时间。我已经通过“正常”方法尽可能多地进行了优化,但其核心是一个荒谬的并行问题。例如,对 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()
很抱歉问了一个很长的问题,答案可能很简单,谢谢!