Мне нужно запустить множество случайных лесных моделей, поэтому я хочу использовать doParallel на моем сервере с 8 ядрами, чтобы ускорить процесс.R doParallel foreach с обработкой ошибок для независимых работников
Тем не менее, некоторым моделям требуется намного больше времени, чем другие, или даже может вызвать ошибки. Я хотел бы запустить 8 моделей параллельно, и если модель выдает ошибку и/или пропускается, рабочие должны просто продолжать. Каждый результат модели сохраняется на жестком диске, поэтому я могу получить доступ и объединить их позже.
TryCatch
или
.errorhandling="remove"
не решить эту проблему. Я получаю
Error in unserialize(socklist[[n]]) : error reading from connection
Пример кода: Я пробовал его с% do% и моделью 2-7 успешно. Тем не менее, в% dopar% Я получаю Показанную ошибку
foreach(model=1:8, .errorhandling="remove") %dopar% {
tryCatch({
outl <- rf_perform(...)
saveRDS(outl,file=getwd() %+% "/temp/result_" %+% model %+% ".rds")
}, error = function(e) {print(e)}, finally = {})
}
примечание: я запускаю новейший R 3.2.3 на Ubuntu 14.04 с 16 ядрами и 64G RAM – user670186