在基于Debian的机器上使用R的并行程序包玩了一段时间后,我仍然无法找到一种方法在计算后删除所有僵尸子进程。使用并行程序包删除僵尸进程
我正在寻找一个通用和独立于操作系统的解决方案。
下面说明2个核问题的一个简单的脚本:
library(parallel)
testfun <- function(){TRUE}
cltype <- ifelse(.Platform$OS.type != "windows", "FORK", "PSOCK")
cl <- makeCluster(2, type = cltype)
p <- clusterCall(cl, testfun)
stopCluster(cl)
不幸的是,这个脚本叶若R被关闭,只有被杀的进程表中的两个僵尸进程。
嗨乔希,对不起,我迟到的回复 - 你是对的,这似乎只是叉集群的问题。 PSOCK群集也在我的Debian机器上工作 - 只是认为Forking会更快。非常感谢! – user625626 2012-03-05 19:02:52
这似乎是FORK群集的一个愚蠢的疏忽。我在https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15471上发布了一个错误报告。僵尸进程大多是无害的,因为它们不消耗资源。他们只是坐在流程表中,以便父进程可以检查其退出状态。用'library(fork)wait()'检查它们的退出状态将一次清理一个僵尸(并打印每个僵尸的退出状态)。 – computermacgyver 2013-09-24 07:33:57
叉包不再可用。 – russellpierce 2015-05-27 12:09:28