Exposing warnings from nodes using snow

32 views Asked by At

I have an lapply operation that I've parallelised using snow. This works fine except that any warnings generated seem to just get ignored and are hence never shown to the user. Is there a way of exposing warnings on individual nodes so they come through in the main R process?

My best idea at the moment is to have all nodes write their warnings to files, and read those at the end, but there must be a better way!

Here's a reprex:

library(snow)

f <- function(x){
  warning("mywarning")
  return(NULL)
}

cl <- makeCluster(2, type="SOCK")

lapply(1:2, f)  # Gives me warnings, as desired
clusterApply(cl, 1:2, f)  # Gives me the same output, faster, but with no warnings
1

There are 1 answers

0
MattB On

In the end I ended up switching from snow to the future.apply package (in conjunction with parallel). future.apply now has this behaviour by default.

Unfortunately in most cases the messages/warnings don't appear until the whole run has finished, but that's a whole new issue.