Progress: Несколько индикаторов выполнения

Созданный на 27 дек. 2015  ·  7Комментарии  ·  Источник: r-lib/progress

Было бы замечательно. Например, если в индикаторе выполнения есть индикатор выполнения ...

Самый полезный комментарий

Да, точно.

Я думаю, что у нас может быть глобальный стек активных индикаторов выполнения. На дисплеях, поддерживающих только одну полосу выполнения, особенно в R Studio, мы будем показывать только верхнюю и, возможно, показывать сводку по остальным. Например, для трех уровней:

85% | 34% | 50% [====================--------------------] ETA 13s

Для терминалов с правильной поддержкой ANSI мы можем показать сразу все индикаторы выполнения (ну, до 10-20).

Все 7 Комментарий

Было бы неплохо, если бы работало что-то вроде этого:

pb1 <- progress_bar$new(total = 100)
for(i in 1:100){
  pb1$tick()
  pb2 <- progress_bar$new(total = 100)  
  for(j in 1:100){
    pb2$tick()
    Sys.sleep(1/1000)
    }
}

Да, точно.

Я думаю, что у нас может быть глобальный стек активных индикаторов выполнения. На дисплеях, поддерживающих только одну полосу выполнения, особенно в R Studio, мы будем показывать только верхнюю и, возможно, показывать сводку по остальным. Например, для трех уровней:

85% | 34% | 50% [====================--------------------] ETA 13s

Для терминалов с правильной поддержкой ANSI мы можем показать сразу все индикаторы выполнения (ну, до 10-20).

Я думаю, что одним из способов поддержки 3 или 4 одновременных индикаторов выполнения в одной строке является использование шаблонов Брайля в Юникоде.

[⠿⠿⠟⠛⠛⠛⠒⠒⠒⠒       ]

@jimhester умный, но, к сожалению, очень ограниченный.

Приведенная ниже функция, которую я построил, очень грубая, но почему невозможно что-то подобное ниже? Я бы хотел иметь его в пакете стиля прогресса с вариантами прогресса.

Восстановить данные:

df <- data.frame(samplecol=c(1:50),
           file=c(1:50))
df$file <- paste0("file",df$file)

x <-function() {Sys.sleep(1/100)}
y <-function() {Sys.sleep(1/20)}

Функция:

doubleProgressBar <- function(x, y) {
    for (i in 1:100) {
      x()
        for(j in 1:50){ 
          y()
          cat("\014")
          writeLines(c(paste0("OVERALL PROGRESS:", i,"%"," [",paste(rep("+",round((i/5))), collapse="")), 
                      paste0("FILE%: ",(j*2),"%"," CURRENTLY LOADING FILE: ",df[j,"file"], " [",paste(rep("+",round((j/2.5))), collapse=""))))
        }
      cat("\014")
      writeLines(c(paste0("OVERALL PROGRESS:", i,"%"," [",paste(rep("+",round((i/5))), collapse="")), 
                   paste0("FILE%: ",(j*2),"%"," CURRENTLY LOADING FILE: ",df[j,"file"], " [",paste(rep("+",round((j/2.5))), collapse=""))))
    }
}

###Does what I want, but with crude text entry. 
###Would be nice to have a package with nice entry have a double bar
doubleProgressBar(x,y)

Это было бы легко сделать, если бы все терминалы R поддерживали escape-последовательность ANSI для перемещения курсора вверх по строкам, к сожалению, некоторые (особенно терминал Windows по умолчанию) этого не делают, поэтому вы ограничены только очисткой последней строки текста с помощью \r .

Можете ли вы добавить возможность использовать полные escape-последовательности ANSI?

В качестве альтернативы вы можете разделить горизонтальное пространство между индикаторами выполнения ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги