如果我使用parSapply
调用某个函数,那么该函数内的print
,message
或cat
语句似乎不会输出到控制台。
我的过程需要很长时间,因此我需要一些方法来查看进度并在结束时获得结果输出。是否有任何特殊命令可以让我从并行进程打印到控制台?
示例:
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)
答案 0 :(得分:37)
在outfile
中使用makeCluster
param,您可以将输出重定向到文件,然后检查该文件以查看程序的进展情况。
有趣的是,在Linux机器上将其设置为""
输出到控制台,但这对我在Windows机器上不起作用。文件输出适用于两者。
答案 1 :(得分:3)
我在Windows上使用带有makeCluster
的{{1}}和doParallel包版本1.0.8。我可以使用简单的Powershell命令outfile
来拖尾outfile
。适合我。