Python多处理:如何将其保持在指定的函数中?
我一直是堆栈溢出的长期观察者,但这次我就是找不到解决问题的方法,所以这里我直接问你 考虑以下代码:Python多处理:如何将其保持在指定的函数中?,python,multithreading,multiprocessing,execution,Python,Multithreading,Multiprocessing,Execution,我一直是堆栈溢出的长期观察者,但这次我就是找不到解决问题的方法,所以这里我直接问你 考虑以下代码: 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" 这是使用池进行多处理的基本示例代码,如第一个框中所示,最后还有一个print语句 在Windo
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"
这是使用池进行多处理的基本示例代码,如第一个框中所示,最后还有一个print语句
在Windows7、Python2.7上的PyCharm社区中执行此操作时,池部分工作正常,但“外部”也会被打印多次。因此,当我尝试在另一个程序中的特定函数上使用多线程时,所有进程最终都会运行整个程序。如何防止这种情况发生,只有给定的函数才是多处理的
我尝试使用进程,关闭、加入和/或终止进程或池,将整个过程嵌入到函数中,从不同的文件调用所述函数(然后开始执行该文件)。我找不到任何与我的问题相关的东西,感觉我缺少了一些非常简单的东西。由于
print
指令没有缩进,因此每次导入python文件时都会执行它。也就是说,每次创建新流程时
相反,如果uuu name uuu='uuuu main uuu位于下的所有代码不会在每次创建进程时执行,而只会从主进程执行,主进程是指令计算结果为true的唯一位置
请尝试以下代码,您将不会再次看到该问题。您应该期望看到外部
仅打印到控制台一次
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"
相关:这就解决了问题!我现在对整个概念有了更好的理解。非常感谢。