gpt4 book ai didi

r - 如何从 clusterApply 打印?

转载 作者:行者123 更新时间:2023-12-05 05:10:33 25 4
gpt4 key购买 nike

library(parallel)
cl=makeCluster(4)
txts = c("I", "AM", "NOT", "PRINTED")
clusterApply(cl, txts, function(txt){write(txt, stderr())})
stopCluster(cl)
txts = c("WHILE", "I", "AM", "PRINTED")
lapply(txts, function(txt){write(txt,stderr())})

当上面的代码运行时,从 clusterApply 调用 write 似乎被忽略了:没有打印任何东西。

我想从 clusterApply 打印的原因是我要运行的代码预计需要很多小时才能完成;我希望能够监控进度。

我发现了一种从 clusterApply 进行打印的令人惊讶的方法;即通过 Rcpp 从 clusterApply 运行的 C++ 代码可以通过 std::cerr 打印到控制台。不过,这样做似乎有点过分了。

还有其他方法可以从clusterApply打印吗?

最佳答案

您可以使用 makeCluster(4, outfile = "") 跟踪您的进度。这也会打开 write(txt, stderr())

的输出

此解决方案 outfile = "" seems只是为了在linux系统上工作。有关窗口的更多信息,请查看链接的问题和评论。似乎有一些解决方案,例如使用 Rterm 而不是 Rgui,但我无法提供给您,因为我无法对其进行测试。

我在 xubuntu 18.04 上使用了以下代码并获得了所有调用。

library(parallel)
cl=makeCluster(4, outfile ="")
txts = c("I", "AM", "NOT", "PRINTED", seq(1,1000000,1))
clusterApply(cl, txts, function(txt){write(txt,stdout())})
stopCluster(cl)

来自makeCluster的纪录片:

outfile:

Where to direct the stdout and stderr connection output from the workers. "" indicates no redirection (which may only be useful for workers on the local machine). Defaults to ‘/dev/null’ (‘nul:’ on Windows). The other possibility is a file path on the worker's host. Files will be opened in append mode, as all workers log to the same file.

所以如果你想使用stderr,你必须明确outfile

关于r - 如何从 clusterApply 打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56501937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com