【发布时间】:2020-02-03 13:33:05
【问题描述】:
我想在 Windows 上的 R 中做一些并行计算。
library(doSNOW)
library(foreach)
cl<-makeCluster(4)
registerDoSNOW(cl)
nn = seq(2,20, by=2)
nn2 = rep(-1,10)
vector.accessed.within.iteration = rep(0, 10)
y = foreach(i=1:10) %dopar% {
print(paste0('i = ', i))
nn2[i] = (nn[i])^2
vector.accessed.within.iteration[i] = nn[i] + nn2[i]
nn2[i]
}
stopCluster(cl)
运行代码时,y 按预期返回为从 2 到 20 的正方形列表。但是,nn2 和 vector.accessed.within.iteration 都不会在 foreach 循环内修改。此外,不会发生打印print(paste0('i = ', i))。
是否可以在 Windows 上并行运行循环迭代,同时显示消息和修改全局环境中的变量?
【问题讨论】:
-
这里已经多次回答了这两个问题。请仔细搜索。
-
@F.Privé 感谢您的评论。我进行了搜索,但我没有找到任何一个问题的答案。也许我没有使用正确的术语。
-
看来你不能简单地修改foreach循环中的变量,你需要返回它们。
-
顺便说一句,请参阅我的博客文章privefl.github.io/blog/a-guide-to-parallelism-in-r 以解决您的两个问题。
标签: r windows for-loop parallel-processing iteration