如何使用“spawn”处理 Python 多处理中的resource_tracker过程?

How to handle resource_tracker process in Python multiprocessing with "spawn"?

提问人:Anthony Poole 提问时间:11/13/2023 更新时间:11/13/2023 访问量:29

问:

我写了一段代码,用来处理许多工人。但是,在某些计算机(所有 Linux 计算机)上,它失败并显示以 开头的错误消息。然后程序无限期挂起。如果我使用默认的“fork”而不是“spawn”,则不会发生这种情况,但切换到 fork 不是我的选择。concurrent.futures.ProcessPoolExecutor(mp_context=mp.get_context('spawn')"resource_tracker: process died unexpectedly, relaunching. Some resources might leak."

我的理解是,这个“resource_tracker”过程应该处理管道/shared_memory。我没有使用任何花哨的多处理结构,而是使用 和 .我通过的所有类型都可以泡菜。submitfutures.result

向resource_tracker进程发送终止信号似乎重现了这一点,但我不确定是什么会杀死它。我还想知道是否有办法获取资源跟踪器进程的 pid,以便我可以定期检查它是否仍然活着。

总的来说,我想知道是否有人知道这个问题的根本原因是什么,以及我如何防止它发生。

Python Linux 多处理

评论


答: 暂无答案