Я использую пакет foreach для параллельного запуска моделирования Монте-Карло с использованием HPC. У меня нет проблем с тем, что foreach возвращает нужные мне результаты, но мне интересно, можно ли периодически сохранять рабочее пространство. Причина, по которой я спрашиваю, заключается в том, что я должен указать время стены (после чего задание завершается), и поэтому я рискую 1. установить слишком низкое время стены и потерять все до того, как цикл foreach завершится и сохранит мой вывод, или 2. установив консервативное время стены и тратить мою квоту. В идеале я хотел бы иметь возможность периодически сохранять свой вывод, и в этом случае у меня все еще будут данные, если задание завершится.
Например:
results <- foreach (ii = 1:100, .combine = rbind) %dopar% {
res1 <- ii^2
res2 <- matrix(sample(1:9,9,replace = F),nrow = 3, ncol = 3)
if (ii %% 10 == 0){
save.image("temp_save.RData")
}
results <- list(res1,res2)
}
save.image("final_save.RData")
> load("~/final_save.RData")
> results
[,1] [,2]
result.1 1 Integer,9
result.2 4 Integer,9
result.3 9 Integer,9
result.4 16 Integer,9
...
но «temp_save» пуст, предположительно потому, что «результаты» генерируются только после завершения цикла foreach. Есть ли способ получить доступ к этим данным и сохранить их до завершения цикла foreach? Спасибо за вашу помощь.