并行化不适用于 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)
使用 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)