Python,多进程和DMTCP:在进程池中如何对一个进程进行检查点?

3

有可能使用Python集成的DMTCP来在并行执行中检查点子进程吗?

我的情况如下:我有一个multiprocessing.Pool,其中有几个工作进程接收异步任务(使用apply_async)。某些任务需要所有资源(CPU核心和内存)。当接受其中一个这样的任务时,我想检查点所有待处理进程,将它们退出执行,启动大型任务,最后恢复检查点的进程。

1个回答

0
如果您使用dmtcp_launch python ...dmtcp_launch ./myapp.py启动Python程序,则主进程创建的所有子进程都会自动处于检查点控制之下。因此,当您尝试从主进程内部对计算进行检查点时,所有其他进程也会被检查点。
我对multiprocessing.Pool不太熟悉,无法就此发表详细评论,但是在我快速了解的一分钟内,我了解到您不希望对主进程(调度程序)进行检查点。然而,DMTCP将作为单个单位检查点重启整个计算(包括调度程序)。这可接受吗?如果不行,另一种选择是不要在DMTCP控制下启动调度程序,而是修改它以仅在检查点控制下启动子/从属进程。我不确定这是否适用于您的应用程序。

非常感谢你的答案,我理解了你的观点。大多数任务可以单独在检查点控制下运行,所以我会先尝试完成它们。 - Oscar Esteban

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接