通过群集并行导出列表在 R 中导出



我有一个大小适中的对象列表,我需要将其导出到R中的PSOCKcluster。

我通过以下方式执行此操作:

cl <- makePSOCKcluster(3, methods = TRUE)
listOfMatrices <- c(bigMatrix1, bigMatrix2, bigMatrix3)
for(i in 1:3){
bigMatrix <- listOfMatrices[i]
clusterExport(cl[i], "bigMatrix", envir = environment())
}

但是,此方法是顺序的,因为导出 n+1 需要导出 n 才能首先完成。

有没有更有效的方法来并行执行此操作?

您可以使用clusterApply函数执行此操作:

library(parallel)
cl <- makePSOCKcluster(3)
listOfMatrices <- list(matrix(1,2,2), matrix(2,2,2), matrix(3,2,2))
clusterApply(cl, listOfMatrices, function(m) {bigMatrix <<- m; NULL})

您可以使用clusterEvalQ验证它是否正常工作:

clusterEvalQ(cl, bigMatrix)

最新更新