У меня есть функция, которую я буду повторять 40000 раз, я хочу сделать ее параллельной, пробовал с библиотекой doParallel с определенным размером пакета 200.
Вывод находится в списке, и я хочу накопитьсуммировать поэлементно.Каждый объект в выводе довольно большой, поэтому я должен разделить его на пакеты.
Однако время выполнения становится очень медленным, так как я запускаю более одного пакета, 1 отдельный пакет занимает 11 с.время, 10 партий занимают 160 секунд.Кто-нибудь имеет представление о том, что я делаю неправильно.
library(doParallel)
myCluster <- makeCluster(3, # number of cores to use
type = "PSOCK") # type of cluster
registerDoParallel(myCluster)
for(i in 1:1){
result = foreach(j=((i-1)*batch_size+1):(i*batch_size)) %dopar% {
some_function(input_data[j,])
}
result_batch_tmp <- Reduce("+",result)
if(i==1) result_batch <- list(result_batch_tmp)
else result_batch <- c(result_batch,result_batch2)
rm(result)
rm(result_batch_tmp)
}
stopCluster(myCluster)