我一直是堆栈溢出的长期观察者,但这次我就是找不到解决我的问题的方法,所以在这里我直接问你!你知道吗
考虑以下代码:
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,关闭、加入和/或终止进程或池,将整个过程嵌入到函数中,从不同的文件调用所述函数(然后开始执行该文件)。我找不到任何与我的问题有关的东西,觉得我错过了一些非常简单的东西。你知道吗
由于
print
指令没有缩进,因此每次导入python文件时都会执行它。也就是说,每次创建新进程时。你知道吗相反,每次创建进程时,
if __name__ == '__main__
下的所有代码都不会执行,而只能从主进程执行,主进程是指令计算结果为true的唯一位置。你知道吗请尝试以下代码,您应该不会再看到问题。您应该只希望看到
External
打印到控制台一次。你知道吗相关:python multiprocessing on windows, if __name__ == "__main__"
相关问题 更多 >
编程相关推荐