我正在使用multiprocessing
python库,也使用emcee
也使用不同的线程来实现MCMC
。问题是,即使我close
pool
,似乎python使用处理器并减慢内核的速度,我不知道在工作完成后释放内核的有效方法是什么。谁能告诉我我应该做什么?
更新:我的代码已经发布在这里。
关闭Pool
不会阻止它执行工作,它只是阻止向其添加新的工作项:
关闭((
防止将更多任务提交到池中。一旦所有 任务已完成,工作进程将退出。
因此,如果您有很多排队的任务,关闭Pool
不会对资源使用情况产生任何影响 - 所有工作线程将继续使用这些排队的任务,直到它们消失。如果要基本上立即中止所有工作项,则必须使用pool.terminate
:
终止((
立即停止工作进程,而不完成未完成的工作。当池对象被垃圾回收时
terminate()
将立即被调用。