我是Windows中的parallel
软件包的新手(以前在类似Unix的环境中完成了我的大多数并行操作,其中进程刚刚分叉)。我正在尝试设置一个集群,在几个不同的数据库中执行一组简单的并行查询。
此时我似乎运行正常。但是,当使用clusterEvalQ
将RODBC加载到每个环境中时,我将返回该环境中加载的所有包的列表。我似乎没有得到clusterEvalQ
中其他命令的任何类似行为,所以我想知道这是否是一个故意的功能,因为我专门加载了一个包。
为什么clusterEvalQ
仅在运行表达式library(RODBC)
时返回输出?
最小工作示例/输出如下所示。
> library(parallel)
> parallel.cluster <- makeCluster(spec = 5)
> clusterEvalQ(cl = parallel.cluster,expr = library(RODBC))
[[1]]
[1] "RODBC" "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"
[[2]]
[1] "RODBC" "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"
[[3]]
[1] "RODBC" "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"
[[4]]
[1] "RODBC" "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"
[[5]]
[1] "RODBC" "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"
答案 0 :(得分:2)
clusterEvalQ
始终返回评估每个集群工作者上的表达式的结果。表达式library(RODBC)
返回所有附加包的字符向量,但它不可见。当通过clusterEvalQ
执行时,它不是不可见的,所以它更明显。