是否可以使用python对dmtcp的集成来检查并行执行的子进程?
我的情况如下:我有一个multiprocessing.Pool有几个工人接收异步作业(使用 apply_async)。某些大型作业需要所有资源(cpu 内核和内存)。当其中一项工作被接受时,我想检查所有挂起的进程,将它们踢出执行,启动大工作,最后恢复检查点进程。
是否可以使用python对dmtcp的集成来检查并行执行的子进程?
我的情况如下:我有一个multiprocessing.Pool有几个工人接收异步作业(使用 apply_async)。某些大型作业需要所有资源(cpu 内核和内存)。当其中一项工作被接受时,我想检查所有挂起的进程,将它们踢出执行,启动大工作,最后恢复检查点进程。
如果您使用dmtcp_launch python ...
or启动您的 python 程序dmtcp_launch ./myapp.py
,主进程创建的所有子进程都会自动处于检查点控制之下。因此,当您尝试从主进程中检查计算点时,所有其他进程也会被检查点。
我对 multiprocessing.Pool 不太熟悉,无法在这方面做出详细评论,但根据我在一分钟内了解的情况,您不想检查您的主进程(调度程序)。但是,DMTCP 将检查点重新启动整个计算(包括调度程序)作为一个单元。这可以接受吗?如果不是,另一种方法是不在 DMTCP 控制下启动调度程序,而是将其修改为仅在检查点控制下启动子/从属进程。我不确定这是否可以在您的应用程序中执行。