首页 > 解决方案 > 具有导入函数的 Python 多处理池

问题描述

使用 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)

test.py 仅包含:

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

运行它会导致无限循环(不返回任何 CPU 使用率高的东西)。

是什么原因造成的,有没有办法解决它?通过将所有代码复制到一个巨大的 .py 中,我成功地让多处理程序在程序上工作,这显然并不理想。

标签: pythonwindowspython-3.xpython-multiprocessing

解决方案


推荐阅读