自从在我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)有没有其他Yosemite用户经历过这种情况?有谁知道这是怎么回事吗?我绝对需要解决这个问题,我不希望通过清除我的硬盘并重新安装OSX Mavericks来解决这个问题。
干杯,
Aaron
发布于 2014-11-10 00:20:14
由@SteveWeston回答,上图:
解决这个问题的最简单方法是在终端窗口中使用R BATCH script.R或Rscript script.R运行脚本文件。例如,将以下示例保存为test_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)通过切换到该驱动器并运行Rscript test_case.R,从保存在计算机上的任何位置运行此文件。我想知道为什么这个问题出现在GUI中?
谢谢你,史蒂夫!
干杯,
Aaron
发布于 2016-08-16 21:25:02
更容易的是,您可以转到Advanced options并取消选择Use multithreading for calculations。这样你就可以避免分叉了。
这对我很管用。
https://stackoverflow.com/questions/26809444
复制相似问题