【发布时间】:2017-07-01 02:31:02
【问题描述】:
我需要用一个条件来停止并行循环,例如,当res < 1 时。 MWE 由下面的代码给出
library(foreach)
library(doParallel)
I <- 1000
L <- 1000
res <- Inf
cores <- detectCores()
cluster <- makeCluster(cores)
registerDoParallel(cluster)
out <- foreach(l = 1:I,.packages = "cec2013") %dopar% {
for(i in 1:I){
res <- 100/i
}
out <- res
out
}
out
我想解决的问题是
out <- foreach(l = 1:I,.packages = "cec2013")%:%when(res < 1) %dopar% {
for(i in 1:I){
res <- 100/i
}
out <- res
out
}
out
但是out 返回一个空列表。
【问题讨论】:
-
确实,还不是很清楚为什么需要内部 for 循环。
标签: r foreach parallel-processing parallel-foreach