0
Я пытаюсь преобразовать этот код на тот, который может быть выполнен на Windows:распараллеливания: пакет «параллельно» вместо «mclapply»
numCores <- detectCores()
results <- mclapply(seq(1, 500), function(file, fID){
myData <- fread(file.path(dirPath, fID, paste0(file, ".csv")))
return(cbind(myData, rep(file, nrow(myData))))
}, mc.cores = numCores, fID = 1)
на основе использования this tutorial, я написал следующий код .. .
UPDATE: правильный код приведен ниже:
getAllMyData <- function(numCores,folderID)
{
dirPath = paste0("D:/home/", folderID, '/')
cl <- makeCluster(4)
allTrips = parLapply(cl, 1:200, function(z){
myData <- read.csv(paste0(dirPath, z, ".csv"))
return(cbind(myData , rep(z, nrow(myData))))
})
stopCluster(cl)
return(allTrips)
}
numCores <- detectCores()
allMyData <- getAllMyData(numCores,1)
спасибо. Я обновил свой пост, где я разместил правильный код. Тем не менее, странно, что среда выполнения почти такая же, как сериализованный код. –
@ KlausosKlausos Это не так удивительно: чтение данных с диска (это большая часть того, что делает ваш код) не может быть эффективно распараллеливано, потому что это привязка к IO, а не операция с привязкой к процессору. –