Ero*_*mic 7 python multiprocessing python-multiprocessing
我正在尝试使用Python的multiprocessing.Pool对象来理解最佳实践.
在我的程序中,我经常使用Pool.imap.通常每次我并行启动任务时,我都会创建一个新的池对象,然后在完成后关闭它.
我最近遇到了挂起,其中提交到池的任务数量少于进程数.奇怪的是它只发生在我的测试管道中,它之前运行了很多东西.作为独立运行测试不会导致手.我认为它与制作多个池有关.
我真的很想找到一些资源来帮助我理解使用Python多处理的最佳实践.具体来说,我目前正在尝试了解制作多个池对象与仅使用一个池对象的含义.
当创建工作进程池时,父进程会产生新的进程。这是一个非常快的操作,但是有其成本。
因此,只要您没有充分的理由(例如,由于一名工人意外死亡导致Pool中断),最好始终使用同一Pool实例。
如果不检查代码,就很难说出挂起的原因。您可能没有正确清理先前的实例(调用close()/ stop(),然后始终调用join())。您可能通过“池”通道发送了太大的数据,该数据通常以死锁结束,依此类推。
如果您提交的任务少于工作者,那么池肯定不会中断。该池旨在将任务数量与工作人员数量分离开来。
| 归档时间: |
|
| 查看次数: |
2656 次 |
| 最近记录: |