При использовании "многоядерного" параллелизма с использованием foreach и бэкэнда doMC (я использую doMC, поскольку в то время, когда я смотрел на него, другой пакет не позволял вести журнал из я хотел бы получить индикатор выполнения, используя пакет прогресса, но любой прогресс ( который работает на терминале linux, т.е. нет всплывающих окон tcltk).
Учитывая, что он использует forking, я могу себе представить, что это будет невозможно, но я не уверен.
Предполагаемое использование заключается в том, чтобы указать прогресс, когда я загружаю параллельное соединение 100 файлов параллельно (обычно в #! Rscript)
Я просмотрел несколько сообщений, например: Как создать индикатор выполнения при использовании функции "foreach()" в R? , Рад наградить щедрость на этом.
РЕДАКТИРОВАТЬ
500 баллов за подачу за кого-то, показывающего мне, как
- используя foreach и многоядерный (разветвляющий) тип параллелизма
- получить индикатор выполнения
- получить журнал с помощью futile.logger
Reprex
# load packages
library("futile.logger")
library("data.table")
library("foreach")
# create temp dir
tmp_dir <- tempdir()
# create names for 200 files to be created
nb_files <- 200L
file_names <- file.path(tmp_dir, sprintf("file_%s.txt", 1:nb_files))
# make it reproducible
set.seed(1L)
nb_rows <- 1000L
nb_columns <- 10L
# create those 200 files sequentially
foreach(file_i = file_names) %do%
{
DT <- as.data.table(matrix(data = runif(n = nb_rows * nb_columns), nrow = nb_rows))
fwrite(x = DT, file = file_i)
flog.info("Creating file %s", file_i)
} -> tmp
# Load back the files
foreach(file_i = file_names, .final = rbindlist) %dopar%
{
flog.info("Loading file %s", file_i)
# >>> SOME PROGRESS BAR HERE <<<
fread(file_i)
} -> final_data
# show data
final_data
Желаемый выход
Обратите внимание, что индикатор выполнения не перепутан с линиями печати)
INFO [2018-07-18 19:03:48] Loading file /tmp/RtmpB13Tko/file_197.txt
INFO [2018-07-18 19:03:48] Loading file /tmp/RtmpB13Tko/file_198.txt
INFO [2018-07-18 19:03:48] Loading file /tmp/RtmpB13Tko/file_199.txt
INFO [2018-07-18 19:03:48] Loading file /tmp/RtmpB13Tko/file_200.txt
[ =======> ] 4%
EDIT 2
После окончания награды ничего не приближается к ожидаемому результату.
Вход в панель выполнения помешает всему. Если кто-то получит правильный результат, я дам еще одну награду за результат.