Глобальные переменные и параллельная обработка - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь обработать большой разделенный фрейм данных partitions, используя pblapply и parallel. Однако глобальные переменные не кажутся доступными для каждого потока.

a - еще один большой массив данных. Как я могу сделать a доступным для функции?

См. Фиктивный скрипт ниже:

library(pbapply)
library(parallel)

partitions <- list(c(1:5),
                   c(6:10),
                   c(11:15))
a <- 1

myfn <- function(x, add = a) {
  out = x + a
  return(out)
}

pblapply(nums, myfn,
         cl = makeCluster(detectCores() - 1))

Это выдает ошибку:

Error in checkForRemoteErrors(val) : 
  3 nodes produced errors; first error: object 'a' not found

1 Ответ

1 голос
/ 07 апреля 2019

Вы должны явно передать аргумент add:

cl <- makeCluster(detectCores() - 1)
pblapply(
  partitions, 
  function(x, add) x + add, 
  cl = cl, 
  add = a
)
stopCluster(cl)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...