Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python多处理:如何将其保持在指定的函数中?_Python_Multithreading_Multiprocessing_Execution - Fatal编程技术网

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"

相关:

这就解决了问题!我现在对整个概念有了更好的理解。非常感谢。