1. AI新视界首页
  2. AI经验分享
  3. 框架平台

Python中使用多进程multiprocessing假死原因,无提示,无光标。

最近项目需要做并行计算,于是尝试写了并行计算程序。一般使用并行有好几种方法,包括多线程和多进程。常用的多进程方法是两种:multiprocessing.Process, multiprocessing.Pool.这两种可有优势,但一般Pool可以使用map和apply方法,对于我来说更加方便。

最近项目需要做并行计算,于是尝试写了并行计算程序。一般使用并行有好几种方法,包括多线程和多进程。常用的多进程方法是两种:multiprocessing.Process, multiprocessing.Pool.这两种可有优势,但一般Pool可以使用map和apply方法,对于我来说更加方便。

写了个demo:

运行发现出现卡死,无法弹出结束光标。很是疑惑,几乎就是对照别人的例子来写的,检查了很久,不知道原因。后来折腾半天发现实例化池的时候有问题。修改如下:

有可能是实例化必须在if __name__ == “__main__”:里面,也有可能是直接导入import multiprocessing会引起不必要的冲突。

让我想到官网上的一段话:

该软件包中的功能要求子项可以导入 __main__ 模块。这包含在 编程指导 中,但值得指出。这意味着一些示例,例如 multiprocessing.pool.Pool 示例在交互式解释器中不起作用。例如:

(如果你尝试这个,它实际上会以半随机的方式输出三个完整的回溯,然后你可能不得不以某种方式停止主进程。)

因此也可能是这个原因导致的。修改后的代码可以正常并行计算。

 

来源:本站原创

 

原创文章,作者:ifyoung,如若转载,请注明出处:https://www.drugfoodai.com/multiprocessor-error.html

发表评论

邮箱地址不会被公开。 必填项已用*标注