Barra de progreso en Python

Manav Narula 30 enero 2023
  1. Utilice el módulo tdqm en Python para crear barras de progreso
  2. Utilice el módulo progressbar en Python para crear barras de progreso
  3. Cree su propia función en Python para crear barras de progreso
Barra de progreso en Python

En el mundo de la programación, trabajamos con grandes volúmenes de código. Un programa puede tardar mucho en compilarse y ejecutarse. Por lo tanto, es un poco útil saber cuánto se ha avanzado y el tiempo estimado de finalización del programa. Para tales situaciones, podemos usar barras de progreso en Python. Además, pueden ayudarnos a identificar si nuestro programa se ha detenido a la mitad o no.

En Python, tenemos muchas bibliotecas disponibles que pueden ayudarnos a crear una barra de progreso simple para nuestro programa que nos ayude con esto. Discutiremos cada método uno por uno en este tutorial.

Utilice el módulo tdqm en Python para crear barras de progreso

La biblioteca tdqm tiene un marco rápido y eficiente para crear barras de progreso básicas. Funciona bien en terminales, portátiles Python y es compatible con Windows, Linux y macOS.

En el siguiente código, creamos una barra de progreso simple usando funciones de este módulo.

from time import sleep
from tqdm import tqdm

for i in tqdm(range(10)):
    sleep(0.2)

Iteramos a través de un bucle, y en cada iteración, la barra de progreso también se incrementa. La función sleep() se utiliza para pausar el compilador durante algunos segundos especificados. Tenga en cuenta que, de forma predeterminada, la barra muestra el tiempo restante, las iteraciones por segundo y el porcentaje.

De todos los módulos discutidos en este tutorial, este es el que tiene menos gastos generales.

Utilice el módulo progressbar en Python para crear barras de progreso

El módulo progressbar hace casi todo como el módulo tdqm. Además de esto, tiene opciones para animar su barra de progreso y usar los widgets que se muestran en la barra de progreso.

El siguiente código muestra un ejemplo de esto.

import time
import progressbar

for i in progressbar.progressbar(range(100)):
    time.sleep(0.02)

La progressbar2 también existe en Python y es una bifurcación de la progressbar. Es extremadamente popular debido a sus características poderosas y personalizables. También admite declaraciones de impresión con la barra de progreso. En el lado negativo, este módulo no se ha mantenido en años.

Tenga en cuenta que hay más bibliotecas disponibles como alive-progress, progress que pueden ayudar a crear las barras de progreso, pero estas dos son las más utilizadas. La única diferencia entre ellos son las animaciones y otras personalizaciones que ofrecen estas bibliotecas.

Cree su propia función en Python para crear barras de progreso

También podemos crear una función simple que puede parecerse a una barra de progreso. El siguiente código implementa esto.

import time
import sys


def progressbar(it, prefix="", size=60, file=sys.stdout):
    count = len(it)

    def show(j):
        x = int(size * j / count)
        file.write("%s[%s%s] %i/%i\r" % (prefix, "#" * x, "." * (size - x), j, count))
        file.flush()
        file.write("\n")

    show(0)
    for i, item in enumerate(it):
        yield item
        show(i + 1)
        file.write("\n")
    file.flush()


for i in progressbar(range(15), "Computing: ", 40):
    time.sleep(0.1)

Producción :

Computing: [........................................] 0/15
Computing: [##......................................] 1/15
Computing: [#####...................................] 2/15
Computing: [########................................] 3/15
Computing: [##########..............................] 4/15
Computing: [#############...........................] 5/15
Computing: [################........................] 6/15
Computing: [##################......................] 7/15
Computing: [#####################...................] 8/15
Computing: [########################................] 9/15
Computing: [##########################..............] 10/15
Computing: [#############################...........] 11/15
Computing: [################################........] 12/15
Computing: [##################################......] 13/15
Computing: [#####################################...] 14/15
Computing: [########################################] 15/15

Calculamos el total de iteraciones necesarias y, en cada iteración, incrementamos el símbolo # y lo imprimimos.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn