Как я могу `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)
Ответы
Ответ 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
. Работает для меня.