Barras de progreso en las aplicaciones Python con tqdm

Si su programa tarda un tiempo en mostrar resultados, evite frustrar a los usuarios mostrando el progreso que está haciendo con las barras de progreso que nos aporta la librería tqdm.

Estos serán simples ejemplos para que tengas una idea de como se utiliza, para un mayor desarrollo del aprendizaje puedes pasarte por la documentación oficial: https://tqdm.github.io/docs/tqdm/

Mostrar barras de progreso en las aplicaciones Python con tqdm
Índice()

    Introducción

    Cuando estamos instalando diferentes aplicaciones, cargando una página o realizando una transacción, siempre nos tranquiliza ver esa pequeña barra de progreso que nos brinda una estimación de cuánto tiempo tardará el proceso en completarse o renderizarse. Si tenemos una barra de progreso simple en nuestro código, se verá muy agradable a la vista y le dará la retroalimentación adecuada al usuario cada vez que ejecuta el código. Para ésto podemos utilizar la biblioteca externa de Python tqdm, para crear barras de progreso simples y sin problemas que puede agregar en su código y hacer que se vea animado.

    Instalación

    Para instalarlo utilizamos PIP, abrimos la terminal o dentro de nuestro entorno virtual y escribimos:

    • pip install tqdm

    Ejemplos de barras de progreso normal

    Usar tqdm es muy simple, solo necesita agregar su código entre la función tqdm() después de importar la biblioteca en su código. Debemos asegurarnos de que el código que coloquemos dentro de la función tqdm() sea iterable o no funcionará.

    Veamos el siguiente ejemplo que nos ayudará a compender mejor lo dicho:

    from tqdm import tqdm
    
    for i in tqdm(range(int(9000000))):
        pass
    

    Si ejecutamos el código deberíamos obtener una salida como la siguiente:

    Ejemplo con tqdm y python, barras de progreso

    Para aclarar, range(int(9000000)) es el iterable que le pasamos a la función. El tipo range en Python es una clase que se utiliza para representar una secuencia inmutable de números.

    Agregamos el parámetro "desc"

    Ahora veremos otro ejemplo agregando el parámetro desc (Podemos utilizar este parámetro para especificar la descripción de nuestra barra de progreso)

    Sintaxis: tqdm(self, iterable, desc = "El texto que tu quieras")

    from tqdm import tqdm 
    from time import sleep 
    
    for i in tqdm(range(0, 100), desc ="El texto que tu quieras"): 
        sleep(.1) 
    
    
    Ejemplo con desc en tqdm, barras de progreso

    Agregamos el parámetro "total"

    Ahora para el siguiente ejemplo utilizaremos el parámetro total (se utiliza para especificar el número total de iteraciones esperadas si aún no se ha especificado o necesita modificación)

    Sintaxis: tqdm(self, iterable, total = 500)

    from tqdm import tqdm 
    from time import sleep 
    
    for i in tqdm(range(0, 100), total = 500, 
                  desc ="El texto que tu quieras"): 
        sleep(.1) 
    
    Ejemplo utilizando total en python y tqdm, barras de progreso

    Agregamos el parámetro "disable"

    El próximo ejemplo es utilizando el parámetro disable (Este parámetro se puede utilizar si deseamos desactivar completamente la barra de progreso)

    Sintaxis: tqdm(self, iterable, disable=True)

    from tqdm import tqdm 
    from time import sleep 
      
    for i in tqdm(range(0, 100), disable = True, 
                   desc ="El texto que tu quieras"): 
        sleep(.1) 
      
    print("Iteration Successful")
    
    Ejemplo utilizando disable en python y tqdm

    Agregamos el parámetro "ncols"

    Ejemplo con parámetro ncols (Este parámetro se utiliza para especificar todo el ancho del mensaje de salida. Si no se especifica, permanece dinámico al tamaño de la ventana. Esto se puede solucionar mediante el parámetro ncols)

    Sintaxis: tqdm(self, iterable, ncols=100)

    from tqdm import tqdm 
    from time import sleep 
      
    for i in tqdm(range(0, 100), ncols = 220, 
                   desc ="El texto que tu quieras"): 
        sleep(.1) 
    
    Ejemplo utilizando ncols en python y tqdm

    Agregamos el parámetro "mininterval"

    Ejemplo con parámetro mininterval (Podemos cambiar fácilmente la actualización mínima de la pantalla de progreso usando esta opción. El valor predeterminado es 0,1 segundos)

    Sintaxis: tqdm(self, iterable, mininterval=3)

    from tqdm import tqdm 
    from time import sleep 
      
    for i in tqdm(range(0, 100), mininterval = 3,  
                  desc ="El texto que tu quieras"): 
        sleep(.1)
    

    La salida es la misma que las anteriores, pero veras que la barra de progreso demora más en mostrarse y por lo tanto cuando se muestre será más avanzado su progreso.

    Agregamos el parámetro "assii"

    Ejemplo con parámetro assii (Podemos usar caracteres ASCII para llenar la barra de progreso según nuestro gusto)

    Sintaxis: tqdm(self, iterable, asii="123456789$", desc="El texto que tu quieras")

    from tqdm import tqdm 
    from time import sleep 
      
    for i in tqdm(range(0, 100),  
                  ascii ="123456789$"): 
        sleep(.1)  
    
    Ejemplo utilizando ASCII en python y tqdm

    Agregamos el parámetro "unit"

    Ejemplo con el parámetro unit (La unidad de tiempo predeterminada es "it" y se puede cambiar usando este parámetro a su unidad preferida)

    Sintaxis: tqdm(self, iterable, unit="ticks")

    from tqdm import tqdm 
    from time import sleep 
    
    for i in tqdm(range(0, 100), unit =" ticks",  
                  desc ="El texto que tu quieras"): 
        sleep(.1)
    
    Ejemplo utilizando unit en python y tqdm

    Agregamos el parámetro "initial"

    Ejemplo con el parámetro initial (El valor inicial de la barra de progreso comienza desde 0. Si desea cambiar esto, puede usar este parámetro para inicializar la barra de progreso desde el valor que desee)

    Sintaxis: tqdm(self, iterable, initial=50)

    from tqdm import tqdm 
    from time import sleep 
      
    for i in tqdm(range(0, 100), initial = 50,  
                  desc ="El texto que tu quieras"): 
        sleep(.1) 
    
    Ejemplo utilizando initial en python y tqdm

    Espero que esta entrada les sea de ayuda y puedan incorporar las barras de progreso en sus códigos si son de cara a un usuario final.

    Saludos, Diego

    dcaraballo

    Creador de @PythonDiario, amante de la Tecnología y la Naturaleza. Programador Python, C# . NET

    1. Lendon dice:

      Gran explicación, hace tiempo estaba buscando un modulo como este!

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.