在打开时,Rstudio启动了许多进程(在上一个会话中以并行包启动) - 如何杀死它们?

时间:2015-06-04 17:02:59

标签: r rstudio parallel-foreach doparallel

我已经阅读了这个问题和答案(R parallel computing and zombie processes),但它似乎并没有完全解决我的情况。

我有一台运行Mac OS X 10.10.3,R 3.2.0和RStudio 0.99.441的4核MacBook Pro。

昨天,我正在试用“foreach”和“doParallel”包(我想在我正在使用的包中使用它们)。我这样做了:

cl <- makeCluster(14)
registerDoParallel(cl)

a <- 0
ls <- foreach(icount(100)) %dopar% {
    b <- a + 1
}

我很清楚,在我的4核机器上有14个进程是没有意义的,但该软件实际上将在16核机器上运行。此时我的电脑停了下来。我打开了活动监视器,发现了16个(或更多,可能是?)R进程。我试图从活动监视器强制退出它们 - 没有运气。我关闭了RStudio并杀死了所有R进程。我重新打开了RStudio并重新启动了所有R进程。我重新启动计算机并重新启动了RStudio,并重新启动了所有R进程。

如何在不重新启动所有这些进程的情况下启动RStudio?

编辑:我忘了提到我还重建了我当时正在处理的软件包(所有进程可能在构建期间一直在运行)

EDIT2:另外,我不能StopCluster(cl)因为cl不在环境中......我关闭了那个R会话。

EDIT3:当我打开R.app(R提供的R GUI)或在终端中打开R时,不会出现这样的问题。所以我认为它必须与RStudio相关。

EDIT4:在打开RStudio和启动所有这些不需要的进程之间似乎存在随机延迟。 15至2分钟。

EDIT5:似乎流程只在我打开它们的项目后才开始。

EDIT6:我一直在浏览.Rproj.user文件,寻找要删除的内容。我删除了ctx,pcs和sdb中的所有文件(但不是目录)。问题依然存在。

EDIT7:当我在命令行运行“killall R”时,它会杀死所有这些进程,但是当我重新启动RStudio并重新打开项目时,所有进程都会重新开始。

EDIT8:我使用“killall -s R | wc -l”来查找R进程的数量在项目打开时增长和增长。它达到了358然后我跑了“killall R”因为我的电脑发出可怕的声音。

EDIT9:RStudio目前完全无法使用。每当我“killall R”时,它会在15秒内重启所有进程。

EDIT10:当我启动一个也会启动大量R进程的构建时 - 最后检查109。当构建“准备延迟加载包”时,这些进程都会启动。此时计算机已经接近停止。

EDIT11:我删除了.Rproj文件(实际上只是将其作为备份移动)和.Rproj.user目录。我在RStudio中使用了“从目录创建项目”。当我打开那个新项目时,我仍然会得到相同的行为。当我打开一个未包含在.Rproj文件或.Rproj.user目录中的项目时,RStudio做了什么!?我花了一整天时间来解决这个问题.... :(

3 个答案:

答案 0 :(得分:0)

最佳猜测 - 最新版本的RStudio尝试在幕后进行一些工作,以开发自动完成数据库,基于在项目中打开的文件中检测到的library()require()调用。为此,它启动新的R进程,加载这些包(使用library()),然后返回该包提供的所有对象的集合。

您是否有机会加载某些具有复杂.onLoad()操作的软件包? RStudio中的这个引擎可能在幕后运行R进程,但由于某种原因而陷入困境并让你处理这些(可能是陈旧或繁忙的)R进程。

作为参考,有一些类似的问题报告here

答案 1 :(得分:0)

最终解决了这个问题:

删除我构建的包(二进制文件,我相信......我点击&#34; x&#34;它右边的&#34;包&#34;部分RStudio)。

使用

重建它
library(parallel)

评论说。

答案 2 :(得分:0)

unloadNamespace("doParallel")

将杀死由registerDoParallel开始的匿名工人

如果您具有群集的名称,则可以使用:

stopCluster(cl)