【发布时间】:2020-04-17 19:05:21
【问题描述】:
我想在我的 R 脚本中将某些事件记录到 .txt 文件中。部分脚本是并行的。是否可以在并行化函数中使用 cat() 或类似函数记录事件?
这不起作用。
chunks <- list(1:3, 4:6)
foreach(i = 1:cores) %:%
foreach(x = chunks[[i]]) %dopar% {
cat("Working on chunk, ", i, "number ", x, "...\n\n")
}
这可行,但它是系统特定的(不理想)
foreach(i = 1:cores, .packages = "glue") %:%
foreach(x = chunks[[i]]) %dopar% {
system(glue("echo 'Working on chunk {i}, number {x}' >> output.txt"))
}
第二个(工作)代码块的示例输出:
Working on chunk 1, number 1
Working on chunk 1, number 2
Working on chunk 1, number 3
Working on chunk 2, number 4
Working on chunk 2, number 6
Working on chunk 2, number 5
【问题讨论】:
-
@F.Privé 这看起来真的很棒而且非常封闭,但它会产生意想不到的后果。例如,当为每个线程加载包时 (.packages = c("package", "names") 我得到了每个线程的所有包加载文本,这真的是多余的!有什么提示吗?
标签: r foreach doparallel