Sha*_*bho 5 parallel-processing foreach r
我正在12节点集群上运行并行进程.
并且想知道在foreach调用期间是否有办法获取node-id或node-number或node-name ?
像这样的东西:
foreach(i = 1:12, .combine=c) %dopar% {node.name()}
Run Code Online (Sandbox Code Playgroud)
这将有助于处理文件.
foreach包不提供对节点ID或节点名称的任何支持,但R具有"sys.info"函数,因此您可以使用:
foreach(i = 1:12, .combine=c) %dopar% {
Sys.info()[['nodename']]
}
Run Code Online (Sandbox Code Playgroud)
要创建唯一的worker id,可以将节点名称与worker的进程ID组合:
foreach(i = 1:12, .combine=c) %dopar% {
paste(Sys.info()[['nodename']], Sys.getpid(), sep='-')
}
Run Code Online (Sandbox Code Playgroud)
经过大量的试验和错误,我发现以下方法可行:
foreach(i = 1:12, .combine=c) %dopar% {
Sys.getpid()
}
Run Code Online (Sandbox Code Playgroud)
这为每个节点提供了唯一的进程 ID,可以将其用作节点 id。