我正在尝试并行化(使用 snow::parLapply
)一些依赖于包(即除 snow
之外的包)的代码。 parLapply
调用的函数中引用的对象必须使用 clusterExport
显式传递给集群.在clusterExport
中,有什么方法可以将整个包传递给集群,而不必显式命名每个函数(包括用户函数调用的包的内部函数!) ?
最佳答案
在所有节点上安装该软件包,并让您的代码调用 library(thePackageYouUse)
在所有节点上,通过一个可用的命令,egg 之类的
clusterApply(cl, library(thePackageYouUse))
我认为
parallel
最近的 R 版本附带的包有示例——参见此处来自 help(clusterApply)
的示例哪里boot
包被加载到任何地方: ## A bootstrapping example, which can be done in many ways:
clusterEvalQ(cl, {
## set up each worker. Could also use clusterExport()
library(boot)
cd4.rg <- function(data, mle) MASS::mvrnorm(nrow(data), mle$m, mle$v)
cd4.mle <- list(m = colMeans(cd4), v = var(cd4))
NULL
})
关于r - 将整个包裹传递给雪簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232629/