2014-06-20 62 views
2

我正在使用并行。如果我的代码在stopCluster(cl)代码运行之前被中断(例如,有错误,或者只是关闭了R控制台),那么R进程将继续运行!我正在使用新的Macbook Pro。在我的活动监视器中,即使在关闭R控制台之后,仍可以看到8个R进程正在运行。我似乎阻止他们的唯一方法是重新启动我的电脑。我也可以强制退出活动监视器中的每个人。有没有更好的解决方案?R关闭后R进程不停止

cl <- makeCluster(getOption('cl.cores', detectCores())) 
clusterEvalQ(cl, library(data.table)) 
clusterEvalQ(cl, require(zoo)) 
... 
stopCluster(cl) 
+0

在Linux当发生这种情况我'杀pid'从终端流氓ř实例。 – JeremyS

回答

2

可以使用mcKill低水平功能parallel包:

将信号发送给一个子进程:等同于包工具pskill。

实施例:

p <- mcparallel(scan(n = 1, quiet = TRUE)) 
parallel:::mckill(p) 
[1] TRUE 
parallel:::mckill(p) ## check that the process is really killed 
Error in FUN(3202L[[1L]], ...) : 'mckill' failed