5
我试图在Windows机器上并行运行predict()
。这适用于较小的数据集,但不能很好地扩展,因为每个进程都会创建新的数据框副本。有没有办法在没有临时拷贝的情况下平行运行?并行预测
我的代码(只有少数的this原代码的修改):
library(foreach)
library(doSNOW)
fit <- lm(Employed ~ ., data = longley)
scale <- 100
longley2 <- (longley[rep(seq(nrow(longley)), scale), ])
num_splits <-4
cl <- makeCluster(num_splits)
registerDoSNOW(cl)
split_testing<-sort(rank(1:nrow(longley))%%num_splits)
predictions<-foreach(i= unique(split_testing),
.combine = c, .packages=c("stats")) %dopar% {
predict(fit, newdata=longley2[split_testing == i, ])
}
stopCluster(cl)
我使用简单的数据复制来测试它。与scale
10或1000它是工作,但我想使它运行与scale <- 1000000
- 数据帧与16M行(1.86GB数据帧由object_size()
从pryr
指示。注意,如有必要,我也可以使用Linux机器,如果这是唯一的选择