我正在使用8核的单台机器。我想使用makeCluster
中的outfile选项将stdout和stderr记录在日志文件中cl = makeCluster(detectCores() - 1,
outfile = "log.txt")
以上代码将日志文件保存在工作目录中。我想知道如何更改outfile的文件路径以保存在任何给定的路径中。 E.g:
cl = makeCluster(detectCores() - 1,
outfile = "\\\\logfolder\\log.txt")
当我指定文件路径时,我没有得到任何日志文件(既不在工作目录中也不在指定路径中)。 文档说明我需要更改worker的主机上的文件路径。
outfile: 从工作者那里引导stdout和stderr连接输出的位置。 “”表示没有重定向(这可能仅对本地计算机上的工作人员有用)。默认为/ dev / null(nul:在Windows上)。另一种可能性是工作者主机上的文件路径。文件将以追加模式打开,因为所有工作人员都会登录到同一个文件。
老实说,我对并行计算术语不是很了解,并且想知道你是否可以帮我改变文件路径。谢谢!
答案 0 :(得分:1)
这对我来说可以在虚拟路径中生成10个单独的文件 - C:/temp/temp/
基于i
。您可以尝试类似的方法。
library(parallel)
cl <- makeCluster(detectCores()-1)
parallel_sink <- function(out) {
O <- file(out, "w")
sink(O)
return(O)
}
clusterExport(cl, c("parallel_sink"))
parLapply(
cl,
1:10,
function(i) {
out <- paste0("C:/temp/temp/", i, ".txt")
worker_out <- parallel_sink(out)
write(paste0("prints to stdout - ", i), stdout())
close(worker_out)
}
)
stopCluster(cl)
rm(cl)