在我基于 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 关闭时才会被杀死。