¿Por qué se necesitan indicadores de progreso?
Indicadores de progreso (barra de progreso): una visualización del proceso de trabajo. Nos liberan de la necesidad de preocuparnos por si el script se cuelga, dan una idea intuitiva de la velocidad de su ejecución y sugieren cuánto tiempo queda para completarlo.
Una persona que no ha usado indicadores de progreso antes puede sugerir que su implementación puede complicar mucho el código. Afortunadamente, esto no es así. Los pequeños ejemplos a continuación muestran cómo comenzar a rastrear el progreso de manera rápida y fácil en la consola o en la interfaz de la biblioteca de gráficos PySimpleGUI que está ganando rápidamente.
Usando Progreso
El primero que tenemos es el módulo Progreso .
Todo lo que se requiere de usted es indicar el número de iteraciones esperadas, el tipo de indicador y llamar a la función en cada iteración:
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()
El resultado del trabajo:
Hay indicadores para todos los gustos:
Usamos tqdm
Siguiente en línea es la biblioteca tqdm .
Indicador de progreso rápido y extensible para Python y CLI
Solo se necesitará una llamada de función para obtener un resultado similar al anterior:
import time from tqdm import tqdm mylist = [1,2,3,4,5,6,7,8] for i in tqdm(mylist): time.sleep(1)
Obtenemos:
Por supuesto, el paquete viene con un montón de configuraciones y opciones.
Usamos progreso vivo
Otra versión de la sintaxis, más animaciones predeterminadas que en los ejemplos 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 progreso de la GUI para el script
A veces se hace necesario proporcionar un indicador gráfico al usuario final.
¿Cuánto código se necesita para lograr ese resultado? Un poco:
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 en la aplicación PySimpleGUI
Considere la implementación del indicador en PySimpleGUI .
Aquí se explica cómo hacerlo:
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()
Conclusión
Como puede ver, no hay nada complicado en agregar información sobre el progreso de la ejecución: hay poco código y la capacidad de respuesta aumenta considerablemente. ¡Usa indicadores para nunca más adivinar si el proceso se está bloqueando o no!