我有一个大小适中的对象列表,我需要将其导出到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)