Ber*_*rnd 4 parallel-processing r
我使用以下方法创建了并行工作程序(所有工作程序都在同一台计算机上运行):
MyCluster = makeCluster(8)
Run Code Online (Sandbox Code Playgroud)
如何使这8个节点中的每一个源都成为我编写的R文件?我试过了:
clusterCall(MyCluster, source, "myFile.R")
clusterCall(MyCluster, 'source("myFile.R")')
Run Code Online (Sandbox Code Playgroud)
和几个类似的版本。但是没有一个有效。您能帮我发现错误吗?
非常感谢你!
以下代码可满足您的目的:
library(parallel)
cl <- makeCluster(4)
clusterCall(cl, function() { source("test.R") })
## do some parallel work
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
您也可以clusterEvalQ()用来做同样的事情:
library(parallel)
cl <- makeCluster(4)
clusterEvalQ(cl, source("test.R"))
## do some parallel work
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
但是,两种方法之间存在细微的差异。clusterCall()在每个节点上运行一个函数,同时在每个节点上clusterEvalQ()计算一个表达式。如果您有要导出的文件的变量列表,clusterCall()则将更易于使用,因为clusterEvalQ(cl,expr)它将任何内容都expr视为表达式,因此在此处放置变量并不方便。