Yosemite OSX中使用foreach和doMC的随机林的问题

Yosemite OSX中使用foreach和doMC的随机林的问题,r,foreach,parallel-processing,osx-yosemite,domc,R,Foreach,Parallel Processing,Osx Yosemite,Domc,自从在2012年末的mac mini上更新到Yosemite OSX后,我所有使用foreach和doMC进行并行计算的脚本都出现了以下错误: The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec(). Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNC

自从在2012年末的mac mini上更新到Yosemite OSX后,我所有使用foreach和doMC进行并行计算的脚本都出现了以下错误:

The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.

计算完成了,但是除了控制台中的错误输出之外,我还有8个打开的僵尸节点。当执行多个并行脚本时,这会导致系统中充斥着这些僵尸节点,这些僵尸节点会在后台烧掉CPU和RAM,从而迅速破坏整个过程:

由于问题取决于系统,我不确定是否可以提供一个在您的机器上也会失败的最小示例,但是下面的脚本在我的机器上重现了错误

install.packages(c('foreach', 'doMC', 'bigrf'))
library(bigrf)
data(Cars93, package="MASS")
x <- Cars93
y <- Cars93$Type
vars <- c(4:22)
forest <- bigrfc(x, y, ntree=30L, varselect=vars, cachepath=NULL)
install.packages(c('foreach','doMC','bigrf'))
图书馆(bigrf)
数据(Cars93,包装=“质量”)

x以上由@SteveWeston回答:

最简单的方法是在终端窗口中使用R CMD BATCH script.R或Rscript script.R运行脚本文件。例如,将以下示例另存为
test\u case.R

library(bigrf)
library(doMC)
data(Cars93, package="MASS")
registerDoMC(detectCores())
x <- Cars93
y <- Cars93$Type
vars <- c(4:22)
forest <- bigrfc(x, y, ntree=30L, varselect=vars, cachepath=NULL)
preds <- predict(forest, x)
print(preds)
库(bigrf)
图书馆(doMC)
数据(Cars93,包装=“质量”)
registerDoMC(detectCores())

x您可以更轻松地转到
高级选项
并取消选择
使用多线程进行计算
。这样可以避免使用叉子


这对我很有用。

看起来你在使用“R控制台”。当您从终端执行R时,是否会出现错误?这是一个很好的问题--我确实在某个时候遇到了一个警告,关于从GUI实现的分叉进程。“我会试着从候机楼跑过去,然后回来报到。就这样,谢谢你的帮助,@SteveWeston。”。考虑到您在设计该软件方面的丰富经验,您是否有任何想法来解释为什么它可能在GUI中崩溃,而不是在批处理模式下崩溃?