python、多处理和 dmtcp : checkpointing one process in Pool?

标签 python multiprocessing pool checkpoint

是否可以使用 python 集成的 dmtcp 在并行执行中检查点子进程?

我的情况如下:我有一个multiprocessing.Pool有几个 worker 接收异步作业(使用 apply_async)。某些 作业需要所有资源(CPU 内核和内存)。当其中一项作业被接受时,我想检查所有挂起的进程,将它们踢出执行,启动大作业并最终恢复检查点进程。

最佳答案

如果您使用 dmtcp_launch python ...dmtcp_launch ./myapp.py 启动您的 python 程序,则主进程创建的所有子进程都会自动处于检查点控制之下.因此,当您尝试在主进程中检查点计算时,所有其他进程也会被检查点。

我对 multiprocessing.Pool 不太熟悉,无法在这方面做出详细评论,但根据我在一分钟内的理解,您不想检查您的主进程(调度程序)。但是,DMTCP 会将检查点作为一个单元重新启动整个计算(包括调度程序)。这是可以接受的吗?如果不是,另一种方法是不在 DMTCP 控制下启动调度程序,而是将其修改为仅在检查点控制下启动子/从进程。我不确定您是否可以在您的应用程序中执行此操作。

关于python、多处理和 dmtcp : checkpointing one process in Pool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28695318/

相关文章:

python - openpyxl:密码保护整个 excel 文件 (xlsx)

python - 多次调用后,多处理池逐渐变慢

python multiprocessing.Pool kill *特定*长时间运行或挂起的进程

Python 多进程池进程计数

java - 绑定(bind)到服务器资源的线程池

python - python-requests 一次失败后如何再发送一个请求?

Emacs 24 中的 Python Shell?

python - QThread 到 QProcesses 的信号/槽

python - 如何在Python中的线程中增加类字段?

python - 如何将值列表写入 csv 文件中的 "cell"?