опция тайм-аута parLapply - PullRequest
       16

опция тайм-аута parLapply

0 голосов
/ 27 ноября 2018

Я параллельно выполняю функцию, используя parLapply следующим образом:

parLapply(cl, df, fun = SomeFunction)

, где cl - это кластер, который я предварительно зарегистрировал.

Однако выполнение функции также занимает слишком много времени.long, и я хотел бы выйти, когда время выполнения занимает слишком много времени.

Я знаю, что пакет R.utils имеет функцию withTimeOut, которая прекрасно работает (когда есть циклы для выхода из - и примененияпо сути это петля).Существует ли аналогичная функция для семейства параллельных применений?

1 Ответ

0 голосов
/ 27 ноября 2018

Используя foreach, который очень похож на parLapply, я могу сделать:

library(doParallel)
registerDoParallel(cl <- makeCluster(2))
foreach(ic = 1:5) %dopar% {
  withCallingHandlers({ 
    setTimeLimit(elapsed = 4, transient = TRUE)
    Sys.sleep(ic)
  }, error = function(e) stop("timeout"))
}
stopCluster(cl)
...