相关疑难解决方法(0)

使用并行包删除僵尸进程

在我基于Debian的机器上使用R的并行软件包玩了一段时间后,我仍然无法找到一种方法来在计算后删除所有僵尸子进程.

我正在寻找一个通用的OS独立解决方案.

下面是一个简单的脚本,说明了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)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个脚本在进程表中留下了两个僵尸进程,只有在R关闭时才会被杀死.

parallel-processing r zombie-process

16
推荐指数
1
解决办法
6809
查看次数

如何杀死doMC工作人员?

doMC的文档似乎非常稀疏,仅列出了doMC-package和registerDoMC().我遇到的问题是我会通过doMC/foreach产生几个工作者,但是当工作完成后,他们只是坐在那里占用内存.我可以去寻找他们的进程ID,但我经常意外地杀死主进程.

library(doMC)
library(foreach)

registerDoMC(32)

foreach(i=1:32) %dopar% foo()

##kill command here?
Run Code Online (Sandbox Code Playgroud)

我试过跟随registerDoSEQ(),但它似乎没有杀掉进程.

parallel-processing foreach r domc

6
推荐指数
2
解决办法
2539
查看次数

如何阻止R离开僵尸进程

这是一个可重复的例子:

library(doMC)
library(doParallel)
registerDoMC(4)
    timing <- system.time( fitall <- foreach(i=1:1000, .combine = "c") %dopar% {
                print(i)
            })
Run Code Online (Sandbox Code Playgroud)

我启动R并查看进程表:

> system("ps -efl")
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S chbr         1     0  5  80   0 - 21399 wait   10:58 ?        00:00:00 /usr/local/lib/R/bin/exec/R --no-save --no-restore
0 S chbr         9     1  0  80   0 -  1113 wait   10:58 ?        00:00:00 sh -c ps -efl
0 R chbr        10     9  0  80 …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r zombie-process

6
推荐指数
1
解决办法
2159
查看次数

标签 统计

parallel-processing ×3

r ×3

foreach ×2

zombie-process ×2

domc ×1