Проблема с использованием doparallel и png вместе

Использование% dopar% в сочетании с png. По какой-то причине R застревает, когда видит этот код. Был бы признателен за совет о том, в чем причина его зависания и как ее обойти.

myCluster <- makeCluster(2, type = "FORK")
registerDoParallel(myCluster)

foreach(f = 1:2) %dopar% {
  png(filename = paste("test", f, ".png", sep = ""), width = 300, height = 300)
  plot(sin, -pi, f * pi)
  dev.off()
}

stopCluster(myCluster)

Я использую Mac с macOS Mojave, если это важно


person Ian    schedule 18.02.2019    source источник


Ответы (1)


вы можете попробовать удалить параметр type = "FORK" в функции makeCluster. Эта опция в основном используется для Windows и Unix-подобных платформ.

myCluster <- makeCluster(2)
registerDoParallel(myCluster)

foreach(f = 1:2) %dopar% {
  png(filename = paste("test", f, ".png", sep = ""), width = 300, height = 300)
  plot(sin, -pi, f * pi)
  dev.off()
}

stopCluster(myCluster)

подробнее см. здесь

person Ulises Rosas-Puchuri    schedule 19.02.2019
comment
Это действительно работает, но я не понимаю почему. Я думал, что эта опция используется для наследования переменных из основного кода таким же образом, если вы разветвляете процесс в Linux. В чем проблема, которая здесь происходит? - person Ian; 20.02.2019
comment
это в основном зависит от ОС. По умолчанию macOS поддерживает форк напрямую с makeCluster, а Windows - нет. Проверьте это: cran.r-project.org/web/ пакеты / doParallel / vignettes / - person Ulises Rosas-Puchuri; 20.02.2019