我想创建一个使用赋值来存储中间输出 (p) 的函数。此中间输出用于以下语句。我希望使用 doSNOW 和 foreach 并行化所有内容,并且我不希望在 forarch 循环的迭代之间传递中间输出。我不想将中间输出存储在列表中(例如p[[i]]
),因为那样我必须更改大量代码。
- 问题 1: foreach 循环的另一次迭代将使用中间输出 (p) 是否存在危险?
- 问题2:如果是,什么时候会发生这种情况以及如何预防?
这是我的意思的一个例子:
install.packages('foreach')
library('foreach')
install.packages('doSNOW')
library('doSNOW')
NbrCores <- 4
cl<-makeCluster(NbrCores)
registerDoSNOW(cl)
test <- function(value){
foreach(i=1:500) %dopar% {
#some statement based on parameter 'value'
p <- value
#some statement that uses p
v <- p
#other statements
}
}
test(value=1)