我已经阅读了这个问题和答案(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做了什么!?我花了一整天时间来解决这个问题.... :(
答案 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)