并行化不适用于 foreach 包

Parallelization doesn't work with the foreach package

使用 foreach 包,我期待以下行在大约 10 秒内变为 运行

system.time(foreach (i=1:5, .combine='c') %do% {Sys.sleep(2);i})
   user  system elapsed 
  0.053   0.011  10.012 

和下一行在大约 2 秒后变为 运行

system.time(foreach (i=1:5, .combine='c') %dopar% {Sys.sleep(2);i})
   user  system elapsed 
  0.069   0.017  10.019 

但是没用。

我在 Mac OSX 上,我的机器有 16 个处理器,目前 运行ning 没有什么大问题。我没有收到任何错误或警告消息。

您需要注册一个并行后端。做一些像

library(doParallel)
registerDoParallel(cores=4)