使用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文件中,我很成功地将一个程序进行了多进程处理。