If I call a function using parSapply
then print
, message
or cat
statements inside that function don't seem to output to the console.
My process takes a very long time, so I need some way of seeing the progress and getting the results output as they are done. Are there any special commands that would allow me to print to the console from a parallel process?
Example:
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)
Using outfile
param in makeCluster
you can redirect the output to a file and then check that file to see how your program progresses.
Interestingly on a Linux machine setting it to ""
outputs to the console, but that doesn't work for me on a Windows machine. File output works on both.
I am using makeCluster
with outfile
on Windows with doParallel package version 1.0.8. I'm able to tail outfile
using a simple Powershell command powershell Get-Content c:/path/to/log/mylog.txt -wait
. Works for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With