Подтвердить что ты не робот

Как я могу `print` или` cat` при использовании параллельных

Если я вызываю функцию с помощью 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)
4b9b3361

Ответ 1

Используя outfile param в makeCluster, вы можете перенаправить вывод в файл, а затем проверить этот файл, чтобы увидеть, как продвигается ваша программа.

Интересно, что на машине Linux она выводит на "" выходы на консоль, но это не работает для меня на Windows-машине. Выход файла работает на обоих.

Ответ 2

Я использую makeCluster с outfile для Windows с пакетом doParallel версии 1.0.8. Я могу хвост outfile с помощью простой команды Powershell powershell Get-Content c:/path/to/log/mylog.txt -wait. Работает для меня.