Вам необходимо захватить стандартный вывод, созданный фоновыми рабочими, и вернуть его как часть результатов, а затем повторно вывести его в основной процесс R. Будущая структура делает это автоматически, а также условия «ретрансляции» и сообщений и предупреждений:
> library(future.apply)
> cl <- parallel::makeCluster(4)
> plan(cluster, workers = cl)
> txts <- c("I", "AM", "ALSO", "PRINTED")
> y <- future_lapply(txts, function(txt) {
+ print(txt)
+ message("M: ", txt)
+ })
[1] "I"
M: I
[1] "AM"
M: AM
[1] "ALSO"
M: ALSO
[1] "PRINTED"
M: PRINTED
> parallel::stopCluster(cl)
К вашему сведению, в следующем выпуске будущего пакета выходные данные рабочих будут переданы как можно скорее, т. Е. Как только результаты будут собраны и доступны. В текущей версии он будет передан только после завершения всех рабочих.
Дополнительные комментарии:
Вы не хотите выводить явно stderr()
- см. https://github.com/HenrikBengtsson/Wishlist-for-R/issues/55 по одной причине.
Подход к созданию кластера PSOCK с outfile = ""
следует считать хаком. Эти выходные данные окажутся в «фоновом режиме», они нигде не будут захвачены R, и то, будет ли он отображаться или нет, сильно зависит от того, в какой среде вы работаете, т.е. его поведение отличается, если R работает в терминале в Linux, в Windows, в Rgui в Windows, RStudio и т. д.