R foreach do parallel не заканчивается после завершения l oop - PullRequest
1 голос
/ 05 августа 2020

Моя цель - выполнить некоторую операцию с фреймом данных следующим образом:

exp_info <- data.frame(location.Id = 1:1e7,
                        x = rnorm(10))

Для каждого местоположения я хочу сделать квадрат переменной x и записать отдельный файл как csv. Мои фактические вычисления более длинные и содержат другие вещи, так что это упрощенный пример c. Вот как я распараллеливаю свою задачу:

library(doParallel)

myClusters <- parallel::makeCluster(6)
doParallel::registerDoParallel(myClusters)

foreach(i = 1:nrow(exp_info), 
        .packages = c("dplyr","data.table"),
        .errorhandling = 'remove',
        .verbose = TRUE) %dopar% 
{
      
  rowRef <- exp_info[i, ]
    
  rowRef <- rowRef %>% dplyr::mutate(x.sq = x^2)
    
  fwrite(rowRef, paste0(i,'_iteration.csv'))

 }  
  

Когда я смотрю в свой рабочий каталог, у меня записаны все отдельные файлы csv (файлы 1e7 csv), что говорит о том, что приведенный выше код является успешным. Однако мой foreach l oop не заканчивается, даже если все файлы записаны, и я должен убить задание, которое также не вызывает никаких ошибок. Кто-нибудь знает, почему это могло произойти?

...