Как ускорить чтение в нескольких объектах R с помощью parLapply? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть много больших списков, которые я сохранил (к сожалению, в то время) как .RData файлы. Все файлы имели одинаковое имя при сохранении. Следовательно, после прочтения файлов я хочу присвоить им новое имя. Я хочу ускорить этот процесс и подумал о параллельных вычислениях. Моя попытка была (при условии, что имена файлов отличаются только последним символом их имени):

require(parallel)
myReadin <- function (x) {
  # Lets assume all lists were named myList when saving them and are hence returned with that name
  load(paste0('myFolder/list', x, '.RData'))
  assign(paste0('myList', x), myList, envir = .GlobalEnv)
}
cl <- makeCluster(getOption("cl.cores", detectCores()))
call.function <- parLapply(cl, 1:50, myReadin)

Обычно это работает. Тем не менее, при чтении в файлах, процессор моего компьютера не максимально, но кажется, что компьютер использует только одно ядро. Кроме того, возвращается только один список call.function с 50 различными списками, но не 50 отдельных списков (myList1, ..., myList50) находятся в глобальной среде. Есть ли способ использовать все мои ядра для чтения в разных файлах и иметь их все как отдельные списки в глобальной среде?

...