并行化不';我不能使用foreach包
使用foreach包,我希望下面的代码行在大约10秒内运行并行化不';我不能使用foreach包,r,foreach,parallel-processing,parallel-foreach,R,Foreach,Parallel Processing,Parallel Foreach,使用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 elapse
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
但它不起作用
我使用的是MacOSX,我的机器有16个处理器,目前没有任何重型设备在运行。我没有收到任何错误或警告消息。您需要注册并行后端。做点像
library(doParallel)
registerDoParallel(cores=4)
看来这里没有什么可比的了。您的for循环声明所有五个循环都是连续运行的。我觉得我误解了。我认为使用%dopar%会导致foreach循环中的任何内容对于
I
的每个值并行运行。在第8页的第一段中,您可以阅读:要使前面的任何示例并行运行,您所要做的就是将%do%替换为%dopar%
。我的错误是什么?您是否收到警告消息:“按顺序执行%dopar%:未注册并行后端”?