Barra de progresso em Python
-
Use o módulo
tdqm
em Python para criar barras de progresso -
Use o módulo
progressbar
em Python para criar barras de progresso - Crie sua própria função em Python para criar barras de progresso
No mundo da programação, trabalhamos com grandes volumes de código. Um programa pode levar muito tempo para ser compilado e executado. Portanto, é um pouco útil saber quanto progresso foi feito e o tempo estimado de conclusão do programa. Para tais situações, podemos usar barras de progresso em Python. Além disso, eles podem nos ajudar a identificar se nosso programa foi interrompido no meio ou não.
Em Python, temos muitas bibliotecas disponíveis que podem nos ajudar a criar uma barra de progresso simples para nosso programa para nos ajudar com isso. Discutiremos cada método um por um neste tutorial.
Use o módulo tdqm
em Python para criar barras de progresso
A biblioteca tdqm
possui uma estrutura rápida e eficiente para a criação de barras de progresso básicas. Funciona bem em terminais, notebooks Python e é compatível com Windows, Linux e macOS.
No código a seguir, criamos uma barra de progresso simples usando funções deste módulo.
from time import sleep
from tqdm import tqdm
for i in tqdm(range(10)):
sleep(0.2)
Iteramos por meio de um loop e, a cada iteração, a barra de progresso também é incrementada. A função sleep()
é usada para pausar o compilador por alguns segundos especificados. Observe que, por padrão, a barra mostra o tempo restante, iterações por segundo e porcentagem.
De todos os módulos discutidos neste tutorial, este é o que tem menos sobrecarga.
Use o módulo progressbar
em Python para criar barras de progresso
O módulo progressbar
faz quase tudo como o módulo tdqm
. Além disso, possui opções para animar sua barra de progresso e usar widgets exibidos na barra de progresso.
O código a seguir mostra um exemplo disso.
import time
import progressbar
for i in progressbar.progressbar(range(100)):
time.sleep(0.02)
A progressbar2
também existe no Python e é um fork da progressbar
. É extremamente popular devido aos seus recursos poderosos e personalizáveis. Ele também oferece suporte a instruções de impressão com a barra de progresso. Por outro lado, este módulo não é mantido há anos.
Observe que mais bibliotecas estão disponíveis como alive-progress
, progress
que podem ajudar a fazer as barras de progresso, mas essas duas são as mais usadas. A única diferença entre eles são as animações e outras personalizações que essas bibliotecas oferecem.
Crie sua própria função em Python para criar barras de progresso
Também podemos criar uma função simples que pode se assemelhar a uma barra de progresso. O código abaixo implementa isso.
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)
Resultado:
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 o total de iterações necessárias e, a cada iteração, incrementamos o símbolo #
e o imprimimos.
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