使用并行时如何“打印”或“猫”

时间:2013-05-23 15:04:13

标签: r io parallel-processing

如果我使用parSapply调用某个函数,那么该函数内的printmessagecat语句似乎不会输出到控制台。

我的过程需要很长时间,因此我需要一些方法来查看进度并在结束时获得结果输出。是否有任何特殊命令可以让我从并行进程打印到控制台?

示例:

library(parallel)

oneloop = function(x) {
  for(i in 1:50) {
    a = rnorm(100000)
    a = sort(a)
  }
  print(x)
  message(x)
  cat(x)
}

cl <- makeCluster(5)
output = parSapply(cl, 1:10, oneloop)
stopCluster(cl)

2 个答案:

答案 0 :(得分:37)

outfile中使用makeCluster param,您可以将输出重定向到文件,然后检查该文件以查看程序的进展情况。

有趣的是,在Linux机器上将其设置为""输出到控制台,但这对我在Windows机器上不起作用。文件输出适用于两者。

答案 1 :(得分:3)

我在Windows上使用带有makeCluster的{​​{1}}和doParallel包版本1.0.8。我可以使用简单的Powershell命令outfile来拖尾outfile。适合我。