Python多处理:如何将它保持在指定的函数中?

2024-05-13 17:47:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直是堆栈溢出的长期观察者,但这次我就是找不到解决我的问题的方法,所以在这里我直接问你!你知道吗

考虑以下代码:

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    print(p.map(f, [1, 2, 3]))

print "External"

这是使用池进行多处理的基本示例代码,如第一个框中的here所示,最后还有一个print语句。你知道吗

在windows7、python2.7上的PyCharm社区中执行此操作时,Pool部分可以正常工作,但“External”也会被打印多次。因此,当我尝试在另一个程序的特定函数上使用多线程时,所有进程最终都会运行整个程序。如何防止这种情况发生,只有给定的函数是多进程的?你知道吗

我尝试改用Process,关闭、加入和/或终止进程或池,将整个过程嵌入到函数中,从不同的文件调用所述函数(然后开始执行该文件)。我找不到任何与我的问题有关的东西,觉得我错过了一些非常简单的东西。你知道吗


Tags: 文件方法函数代码fromimport程序进程
1条回答
网友
1楼 · 发布于 2024-05-13 17:47:11

由于print指令没有缩进,因此每次导入python文件时都会执行它。也就是说,每次创建新进程时。你知道吗

相反,每次创建进程时,if __name__ == '__main__下的所有代码都不会执行,而只能从主进程执行,主进程是指令计算结果为true的唯一位置。你知道吗

请尝试以下代码,您应该不会再看到问题。您应该只希望看到External打印到控制台一次。你知道吗

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    print(p.map(f, [1, 2, 3]))

    print "External"

相关:python multiprocessing on windows, if __name__ == "__main__"

相关问题 更多 >