【发布时间】:2018-01-16 07:33:28
【问题描述】:
我刚开始在 R 中使用 foreach 和 %dopar% 方法进行并行处理,但是我得到的结果令人困惑,并且与 for 循环不同;这是我用来测试我得到的那些方法和结果的代码:
library(plyr); library(doParallel); library(foreach)
cs <- makeCluster(2)
registerDoParallel(cs)
sfor_start <- Sys.time()
s_for=as.numeric()
for (i in 1:1000) {
s_for[i] = sqrt(i)
}
print(Sys.time() - sfor_start)
sdopar_start <- Sys.time()
sdopar=as.numeric()
foreach(k=1:1000) %dopar% {
sdopar[k] = sqrt(k)
}
print(Sys.time() - sdopar_start)
结果如下:
> s_for[1:10]; sdopar[1:10]
[1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427 3.000000 3.162278
[1] NA NA NA NA NA NA NA NA NA NA
提前谢谢:)
【问题讨论】:
-
你能试试
sdopar <- foreach(k=1:1000) %dopar% { sqrt(k) }吗? -
与 .combine=c 配合使用,谢谢
标签: r foreach parallel-processing plyr