多处理将参数传递给单独的文件

时间:2016-10-07 11:55:34

标签: python windows multiprocessing

我有一个包含多个步骤的管道,对于某些步骤,我想使用多处理模块来并行计算。

我的主要代码在一个文件中,我们称之为pipeline.py。 存储在单独文件中的每个计算的代码,我们称之为calculation01.pycalculation02.pycalculation03.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()

0 个答案:

没有答案