Я хочу создать функцию, которая использует присваивания для хранения промежуточного вывода (p). Этот промежуточный вывод используется в операторах ниже. Я хочу, чтобы все было распараллелено с помощью doSNOW и foreach, и я НЕ хочу, чтобы этот промежуточный вывод передавался между итерациями цикла foreach. Я не хочу хранить промежуточный вывод в списке (например, 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)