文档示例无效,因为代码永不停止运行

时间:2018-09-20 21:24:48

标签: python-3.x multithreading

我是Multiprocessing的新手,我正在尝试在Jupyter笔记本上运行基本的第一个示例here,并且它从未停止过。我复制了以下代码:

from multiprocessing import Pool

def f(x):
    return x*x

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

我什至试图像这样重写它: enter image description here

我在Windows 7上从Anaconda Navigator运行jupyter笔记本

任何指导将不胜感激

1 个答案:

答案 0 :(得分:0)

在尝试几次您的代码以及您链接到的页面上的第一个示例的代码后,我未能复制问题。代码运行平稳,在运行代码后完全停止,并返回给我:

  

CPU时间:0.09秒,内存:14548 KB

池中的工作进程将在池的工作队列的整个期间内保持活动。因此,代码的难度和排队几乎是零,进程应该在几秒钟内杀死自己。

当您成为Multiprocessing的新闻时,我将重复使用的基本方法:

  • Start()启动流程的活动。
  • Join()等待工作人员退出。
  • Close()将阻止所有其他任务提交到池中,并在所有任务完成后退出。
  • Terminate()会通过立即停止所有工作进程退出。

当不使用Pool时,必须始终在使用join()之前调用close()或终止(),但这与您的问题无关。我根本看不到您的程序如何或为什么不应该停止运行。 但是,我建议您尝试使用另一个编译器-甚至可能是另一个在线编译器(如jdoodle.com),以查看执行代码时返回的结果。


编辑:因此,事实上,图片框的底部有一个边缘,我想说这个过程已经完成了。您怎么知道您的代码不会停止运行?