Acompanhando o progresso no Python

Por que são necessários indicadores de progresso?


Indicadores de progresso (barra de progresso) - uma exibição visual do processo de trabalho. Eles nos aliviam da necessidade de se preocupar se o script está travado, dão uma idéia intuitiva da velocidade de sua execução e sugerem quanto tempo resta até a conclusão.


Uma pessoa que nunca usou indicadores de progresso antes pode sugerir que sua implementação pode complicar bastante o código. Felizmente, não é assim. Os pequenos exemplos abaixo mostram como iniciar com rapidez e facilidade o rastreamento do progresso no console ou na interface da biblioteca de gráficos PySimpleGUI, que está ganhando rapidamente.


Usando o progresso


O primeiro que temos é o módulo Progress .


Tudo o que você precisa é indicar o número de iterações esperadas, o tipo de indicador e chamar a função a cada iteração:


import time from progress.bar import IncrementalBar mylist = [1,2,3,4,5,6,7,8] bar = IncrementalBar('Countdown', max = len(mylist)) for item in mylist: bar.next() time.sleep(1) bar.finish() 

O resultado do trabalho:



Existem indicadores para todos os gostos:



Usamos tqdm


O próximo na fila é a biblioteca tqdm .


Indicador de progresso rápido e extensível para Python e CLI


Apenas uma chamada de função será necessária para obter um resultado semelhante ao anterior:


 import time from tqdm import tqdm mylist = [1,2,3,4,5,6,7,8] for i in tqdm(mylist): time.sleep(1) 

Temos:



Obviamente, o pacote vem com várias configurações e opções.


Usamos o progresso vivo


Outra versão da sintaxe, mais animações padrão do que nos exemplos anteriores:


 from alive_progress import alive_bar import time mylist = [1,2,3,4,5,6,7,8] with alive_bar(len(mylist)) as bar: for i in mylist: bar() time.sleep(1) 

Resultado:



Indicador de progresso da GUI para script


Às vezes, torna-se necessário fornecer um indicador gráfico para o usuário final.



Quanto código é necessário para alcançar esse resultado? Um pouco:


 import PySimpleGUI as sg import time mylist = [1,2,3,4,5,6,7,8] for i, item in enumerate(mylist): sg.one_line_progress_meter('This is my progress meter!', i+1, len(mylist), '-key-') time.sleep(1) 

Indicador no aplicativo PySimpleGUI


Considere a implementação do indicador no PySimpleGUI .



Veja como fazê-lo:


 import PySimpleGUI as sg import time mylist = [1,2,3,4,5,6,7,8] progressbar = [ [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')] ] outputwin = [ [sg.Output(size=(78,20))] ] layout = [ [sg.Frame('Progress',layout= progressbar)], [sg.Frame('Output', layout = outputwin)], [sg.Submit('Start'),sg.Cancel()] ] window = sg.Window('Custom Progress Meter', layout) progress_bar = window['progressbar'] while True: event, values = window.read(timeout=10) if event == 'Cancel' or event is None: break elif event == 'Start': for i,item in enumerate(mylist): print(item) time.sleep(1) progress_bar.UpdateBar(i + 1) window.close() 

Conclusão


Como você pode ver, não há nada complicado em adicionar informações sobre o progresso da execução: há pouco código e a capacidade de resposta é bastante aumentada. Use indicadores para nunca mais adivinhar se o processo está interrompido ou não!

Source: https://habr.com/ru/post/pt483400/


All Articles