【发布时间】:2017-02-05 15:28:04
【问题描述】:
我正在并行运行一个函数。为了获得有关工作状态的进度更新,我希望一名但只有一名工作人员定期报告其进度。我对如何做到这一点的自然想法是让工作人员执行的功能检查工作人员的名称,并且仅在名称与特定值匹配时才提供状态更新。但是,我找不到可靠的方法来提前确定这一点。例如,在 Julia 中,有一个简单的 myid() 函数将给出工作人员的 ID(即 1、2 等)。我正在寻找 R 中的等价物。到目前为止,我发现的最好的方法是让每个工人致电 Sys.getpid()。但是,我不知道编写脚本的可靠方法,以便我提前知道分配给工作人员的 pid 是什么。我要编写的基本功能脚本如下所示,除了我正在寻找的 R 等效于 myid() 函数:
library(parallel)
Test_Fun = function(a){
for (idx in 1:10){
Sys.sleep(1)
if (myid() == 1){
print(idx)
}
}
}
mclapply(1:4, Test_Fun, mc.cores = 4)
【问题讨论】:
标签: r parallel-processing mclapply