1. 首页
  2. 行业
  3. 外包
  4. 解决windows下python3使用multiprocessing.Pool出现的问题

解决windows下python3使用multiprocessing.Pool出现的问题

上传者: 2020-09-21 08:40:30上传 PDF文件 151.47KB 热度 12次

主进程与各个worker子进程间的通信使用内部定义的Queue,其实就是Pipe管道通信,如上图的_taskqueue、_inqueue和_outqueue。其实就是典型的生产消费问题。下面的代码是pool.worker工作子进程的核心执行函数的简化版。从代码中可以看到,在执行func时,如果func抛出异常,那么worker会将异常对象直接放入到_outqueue中,然后等待下一个task。也就是说,worker是可以处理异常的。这样,用户主进程就会一直卡在get()中,导致主流程执行不下去。具体可查看python官方文档关于pickle的介绍。不管如何,就是实例在get,即unpickle的过程出错了。

下载地址
用户评论