具有导入功能的Python多处理池

时间:2018-07-03 15:16:27

标签: python windows python-3.x python-multiprocessing

使用Windows和python 3.6导入要映射的函数后,多重处理就会遇到麻烦。 这段代码有效(给出输出[2,12,30,56,90]):

from multiprocessing import Pool
def f(x,y):
    return x*y

if __name__ == '__main__':
    args=[(1,2),(3,4),(5,6),(7,8),(9,10)]
    with Pool(4) as p:
        result=p.starmap(f,args)
    print(result)

现在,我将函数f移到另一个名为“ test”的.py文件中,然后将其导入:

from multiprocessing import Pool
from test import f    

if __name__ == '__main__':
    args=[(1,2),(3,4),(5,6),(7,8),(9,10)]
    with Pool(4) as p:
        result=p.starmap(f,args)
    print(result)

with test.py仅包含:

def f(x,y):
    return x*y

运行此命令将导致无限循环(不会返回CPU使用率很高的任何内容)。

是什么原因造成的,有没有办法解决?通过将所有代码复制到一个巨大的.py文件中,我很成功地将一个程序进行了多进程处理。

0 个答案:

没有答案