Barra di avanzamento in Python
-
Usa il modulo
tdqm
in Python per creare barre di avanzamento -
Usa il modulo
progressbar
in Python per creare barre di avanzamento - Creare la propria funzione in Python per creare barre di progresso
Nel mondo della programmazione, lavoriamo con grandi volumi di codice. Un programma potrebbe richiedere molto tempo per essere compilato ed eseguito. Pertanto, è un po’ utile sapere quanti progressi sono stati compiuti e il tempo stimato per il completamento del programma. Per tali situazioni, possiamo usare le barre di avanzamento in Python. Inoltre, possono aiutarci a identificare se il nostro programma si è interrotto o meno.
In Python, abbiamo molte librerie disponibili che possono aiutarci a creare una semplice barra di avanzamento per il nostro programma per aiutarci in questo. Discuteremo ogni metodo uno per uno in questo tutorial.
Usa il modulo tdqm
in Python per creare barre di avanzamento
La libreria tdqm
dispone di una struttura rapida ed efficiente per la creazione di barre di avanzamento di base. Funziona bene su terminale, notebook Python ed è compatibile con Windows, Linux e macOS.
Nel codice seguente creiamo una semplice barra di avanzamento utilizzando le funzioni di questo modulo.
from time import sleep
from tqdm import tqdm
for i in tqdm(range(10)):
sleep(0.2)
Si itera attraverso un bucle e ad ogni iterazione viene incrementata anche la barra di avanzamento. La funzione sleep()
è usata per mettere in pausa il compilatore per alcuni secondi specificati. Nota che per impostazione predefinita, la barra mostra il tempo rimanente, le iterazioni al secondo e la percentuale.
Di tutti i moduli discussi in questo tutorial, questo ha il minimo sovraccarico.
Usa il modulo progressbar
in Python per creare barre di avanzamento
Il modulo progressbar
fa quasi tutto come il modulo tdqm
. Oltre a questo, ha opzioni per animare la barra di avanzamento e utilizzare i widget visualizzati sulla barra di avanzamento.
Il codice seguente mostra un esempio di ciò.
import time
import progressbar
for i in progressbar.progressbar(range(100)):
time.sleep(0.02)
La progressbar2
esiste anche in Python ed è un fork della progressbar
. È estremamente popolare grazie alle sue funzionalità potenti e personalizzabili. Supporta anche istruzioni di stampa con la barra di avanzamento. Al rovescio della medaglia, questo modulo non è stato mantenuto per anni.
Nota che sono disponibili più librerie come alive-progress
, progress
che possono aiutare a creare le barre di avanzamento, ma queste due sono le più usate. L’unica differenza tra loro sono le animazioni e altre personalizzazioni offerte da queste librerie.
Creare la propria funzione in Python per creare barre di progresso
Possiamo anche creare una semplice funzione che possa assomigliare a una barra di avanzamento. Il codice seguente implementa questo.
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)
Produzione:
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
Calcoliamo le iterazioni totali richieste e su ogni iterazione incrementiamo il simbolo #
e lo stampiamo.
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