我有一个包含多个步骤的管道,对于某些步骤,我想使用多处理模块来并行计算。
我的主要代码在一个文件中,我们称之为pipeline.py。
存储在单独文件中的每个计算的代码,我们称之为calculation01.py
,calculation02.py
,calculation03.py
。
#pipeline.py
import calculation01
import calculation02
import calculation03
for folder in all_taks:
calculation01.do_calculation_1(folder, a, b, c)
calculation02.do_calculation_2(folder, d, e, f)
calculation03.do_calculation_3(folder, g, h, i)
对于calculate01,可以并行计算。如果我理解正确,在Windows上,并行化的代码必须在
中if __name__ == '__main__':
而不是在函数内部。
现在我的问题是如何将参数传递给文件calculation01.py
?这可能吗?
#calculation01.py
def do_calculation_1(args):
#do heavy calculation
folder, a, b, c = args
if __name__ == '__main__':
b, c = 1, 1
ll = [([1, 2, 3, 4], a, b, c),
([5, 6, 7, 8], a, b, c),
([9, 10, 11, 12], a, b, c)]
pool = multiprocessing .Pool(4)
result = pool.map(do_calculation_1, ll)
pool.terminate()