Распараллелить функцию в R - PullRequest
1 голос
/ 02 июля 2019

Я использую функцию анализа звука для коротких аудиофайлов размером около 25 тыс.Мой код работает, но это займет очень много времени для запуска.Что было бы хорошим подходом для его распараллеливания?

Большое спасибо,

files = list.files(getwd(), pattern=".mp3", all.files=FALSE, full.names=FALSE)

out=NULL

for (i in files) {

res <- try(soundgen::analyze(i,pitchMethods = 'dom',  plot = FALSE, summary = TRUE), silent = TRUE)
res["1", "duration"] <- i[[1]]
out=rbind(out,res)
print(i)
}

1 Ответ

1 голос
/ 02 июля 2019

Вы можете легко использовать параллельный пакет:

library(parallel)
library(soundgen)

files <- list.files(getwd(), pattern=".mp3", all.files=FALSE, full.names=FALSE)

out <- NULL

soundAnalysis <- function(file){
  res <- try(soundgen::analyze(file,pitchMethods = 'dom',  plot = FALSE, summary = TRUE), silent = TRUE)
  res["1", "duration"] <- file[[1]]
  out <- rbind(out,res)
  print(i)
}

output <- mclapply(X = files, FUN = soundAnalysis, mc.cores = detectCores())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...