In diesem Artikel werden die sieben besten Python-Bibliotheken zur Implementierung von Fortschrittsbalken vorgestellt, ergänzt durch praktische Beispiele, die Ihnen helfen, die Fortschrittsverfolgung schnell in Datenverarbeitungs-, Maschinenlern- und Automatisierungsabläufe zu integrieren.
Fortschrittsbalken machen das Warten erträglicher. Sie zeigen an, wie viel von einer Aufgabe bereits abgeschlossen ist, wie viel noch verbleibt und ob eine Schleife noch läuft oder gestoppt ist. Dieses einfache visuelle Feedback verbessert die Klarheit bei der Ausführung langwieriger Skripte.
Besonders nützlich sind Fortschrittsbalken in der Datenverarbeitung, beim Modelltraining und in Maschinenlern-Workflows, wo Aufgaben mehrere Minuten oder sogar Stunden in Anspruch nehmen können. Anstatt ohne Rückmeldung zu warten, können Entwickler den Fortschritt in Echtzeit verfolgen und das Ausführungsverhalten besser verstehen.
1. tqdm
tqdm gehört zu den bekanntesten Python-Bibliotheken, um Fortschrittsbalken in Schleifen und iterierbaren Workflows hinzuzufügen. Sie ist leichtgewichtig, einfach zu integrieren und funktioniert sofort mit minimalen Codeänderungen.
Die Bibliothek passt sich automatisch an verschiedene Umgebungen an, einschließlich Terminals, Notebooks und Skripten, was sie zu einer zuverlässigen Wahl für Datenverarbeitungs- und Maschinenlernaufgaben macht, bei denen die Sichtbarkeit des Ausführungsfortschritts wichtig ist.
- Automatische Fortschrittsverfolgung für jedes Iterable mit minimalen Codeänderungen
- Hohe Leistung mit sehr geringem Overhead, selbst bei großen Schleifen
- Klare und informative Ausgaben, einschließlich Iterationsgeschwindigkeit und geschätzter verbleibender Zeit
Beispielcode:
# pip install tqdm
from tqdm import tqdm
import time
records = range(1_000)
for record in tqdm(records, desc="Cleaning records"):
time.sleep(0.002)
Ausgabe:
Cleaning records: 100%|██████████| 1000/1000 [00:02
2. rich
rich ist eine moderne Python-Bibliothek, die darauf abzielt, visuell ansprechende und gut lesbare Terminalausgaben zu erstellen, einschließlich fortschrittlicher Fortschrittsbalken. Im Gegensatz zu traditionellen Fortschrittsbalkenbibliotheken konzentriert sich rich auf die Präsentation, was sie ideal für Anwendungen macht, bei denen Klarheit und Ästhetik wichtig sind, wie Entwicklerwerkzeuge, Dashboards und Befehlszeilenoberflächen.
Die Fortschrittsbalken in rich unterstützen reichhaltige Textformatierungen, dynamische Beschreibungen und flüssige Animationen. Dies macht sie besonders nützlich, wenn Sie Fortschrittsanzeigen wünschen, die sowohl informativ als auch visuell ansprechend sind, ohne komplexe Logik in Ihren Code einzufügen.
- Visuell ansprechende Fortschrittsbalken mit Farben, Stilen und flüssigen Animationen
- Einfache API zur Verfolgung des Fortschritts über Iterables
- Nahtlose Integration mit anderen rich-Komponenten wie Tabellen, Protokollen und Panels
Beispielcode:
# pip install rich
from rich.progress import track
import time
endpoints = ["users", "orders", "payments", "logs"]
for api in track(endpoints, description="Fetching APIs"):
time.sleep(0.4)
Ausgabe:
Fetching APIs ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01
3. alive-progress
alive-progress ist eine Python-Bibliothek, die sich auf die Erstellung animierter und visuell ansprechender Fortschrittsbalken für Terminalanwendungen konzentriert. Sie zeichnet sich durch flüssige Animationen und dynamische Indikatoren aus, die es einfacher machen, langwierige Aufgaben zu überwachen und angenehmer anzusehen.
Diese Bibliothek eignet sich gut für Skripte, bei denen die Benutzererfahrung wichtig ist, wie Trainingsschleifen, Batch-Jobs und Befehlszeilenwerkzeuge. Sie bietet eine flexible API, die es Entwicklern ermöglicht, Titel, Stile und Verhalten anzupassen, während die Implementierung einfach bleibt.
- Flüssige animierte Fortschrittsbalken mit dynamischen Indikatoren
- Flexible Anpassung von Titeln, Stilen und Aktualisierungsverhalten
- Klare Leistungskennzahlen, einschließlich vergangener Zeit und Verarbeitungsgeschwindigkeit
Beispielcode:
# pip install alive-progress
from alive_progress import alive_bar
import time
epochs = 10
with alive_bar(epochs, title="Training model") as bar:
for _ in range(epochs):
time.sleep(0.6)
bar()
Ausgabe:
Training model |████████████████████████████████████████| 10/10 [100%] in 6.0s (1.67/s)
4. Halo
Halo ist eine Python-Bibliothek, die entwickelt wurde, um elegante Spinner-Animationen im Terminal anzuzeigen. Anstatt den Fortschritt als Prozentsatz oder Balken darzustellen, bietet Halo visuelle Indikatoren, die einen laufenden Prozess signalisieren, was sie ideal für Aufgaben macht, bei denen der Fortschritt nicht leicht quantifiziert werden kann.
Diese Bibliothek wird häufig für Startvorgänge, Netzwerkaufrufe und Hintergrundoperationen verwendet, bei denen ein einfacher Statusindikator geeigneter ist als ein traditioneller Fortschrittsbalken. Ihre saubere API und anpassbare Spinner machen es einfach, polierte Rückmeldungen zu Befehlszeilenwerkzeugen hinzuzufügen.
- Leichte Spinner-Animationen für unbestimmte Aufgaben
- Einfache und intuitive API mit Start-, Erfolgs- und Fehlermeldungen
- Mehrere integrierte Spinner-Stile mit anpassbarem Text
Beispielcode:
# pip install halo
from halo import Halo
import time
spinner = Halo(text="Starting database", spinner="line")
spinner.start()
time.sleep(3)
spinner.succeed("Database ready")
Ausgabe:
| Starting database
✔ Database ready
5. ipywidgets
ipywidgets ist eine Python-Bibliothek, die interaktive Benutzeroberflächenkomponenten in Jupyter-Notebooks ermöglicht, einschließlich Fortschrittsbalken, Schieberegler, Schaltflächen und Formulare. Im Gegensatz zu terminalbasierten Bibliotheken rendert ipywidgets Fortschrittsanzeigen direkt in der Notebook-Oberfläche, was sie besonders nützlich für explorative Datenanalysen und interaktive Experimente macht.
Fortschrittsbalken, die mit ipywidgets erstellt werden, integrieren sich nahtlos in Notebook-Workflows, sodass Benutzer langwierige Aufgaben überwachen können, ohne die Ausgabe zu überladen. Dies macht sie zu einer starken Wahl für Maschinenlernerfahrungen, Parameteroptimierung und iterative Forschung in Jupyter-Umgebungen.
- Native Fortschrittsbalkenanzeige in Jupyter-Notebooks
- Interaktive UI-Komponenten über die Fortschrittsverfolgung hinaus
- Fein abgestufte Kontrolle über Fortschrittsaktualisierungen und Anzeigeverhalten
Beispielcode:
# pip install ipywidgets
import ipywidgets as widgets
from IPython.display import display
import time
progress = widgets.IntProgress(value=0, max=5, description="Experiments")
display(progress)
for _ in range(5):
time.sleep(1)
progress.value += 1
Ausgabe:
6. progress
progress ist eine leichte Python-Bibliothek, die einfache und klassische Fortschrittsbalken für terminalbasierte Anwendungen bereitstellt. Sie konzentriert sich auf Minimalismus und Lesbarkeit und ist eine gute Wahl für Skripte, bei denen Klarheit wichtiger ist als fortgeschrittene Stile oder Animationen.
Die Bibliothek bietet mehrere Fortschrittsindikatoren, darunter Balken, Spinner und Zähler, sodass Entwickler das Format wählen können, das am besten zu ihrem Anwendungsfall passt. Ihre unkomplizierte API erleichtert die Integration in bestehende Skripte mit minimalen Änderungen.
- Einfache und klare terminalbasierte Fortschrittsbalken
- Mehrere Fortschrittsindikatoren wie Balken und Spinner
- Minimale Abhängigkeiten und einfache Integration
Beispielcode:
# pip install progress
from progress.bar import Bar
import time
files = ["a.csv", "b.csv", "c.csv"]
bar = Bar("Uploading files", max=len(files))
for _ in files:
time.sleep(0.7)
bar.next()
bar.finish()
Ausgabe:
Uploading files ████████████████████████████████ 100%
7. click
click ist eine Python-Bibliothek zum Erstellen von Befehlszeilenoberflächen, die integrierte Unterstützung für Fortschrittsbalken bietet. Im Gegensatz zu eigenständigen Fortschrittsbalkenbibliotheken integriert click die Fortschrittsverfolgung direkt in CLI-Befehle, was sie ideal für Werkzeuge macht, die verteilt und aus dem Terminal verwendet werden.
Der von click bereitgestellte Fortschrittsbalken ist einfach, zuverlässig und so konzipiert, dass er nahtlos mit seinem Befehlsystem funktioniert. Er ist besonders nützlich beim Erstellen von Datenpipelines, Automatisierungsskripten oder Entwicklerwerkzeugen, bei denen Rückmeldungen zum Fortschritt Teil des Befehlsausführungsflusses sein sollten.
- Integrierte Fortschrittsbalken, die speziell für Befehlszeilenoberflächen entwickelt wurden
- Nahtlose Integration mit click-Befehlsdekorationen und -optionen
- Zuverlässige Ausgabehandhabung für terminalbasierte Werkzeuge
Beispielcode:
# pip install click
import time
import click
@click.command()
def main():
items = list(range(30))
# Progressbar wraps the iterable
with click.progressbar(items, label="Processing items") as bar:
for item in bar:
# Simulate work
time.sleep(0.05)
click.echo("Done!")
if __name__ == "__main__":
main()
Ausgabe:
Processing items [####################################] 100%
Done!
Vergleich der Python-Fortschrittsbalkenbibliotheken
Die folgende Tabelle bietet einen einfachen Vergleich der in diesem Artikel behandelten Python-Fortschrittsbalkenbibliotheken, wobei der Fokus darauf liegt, wo sie am besten eingesetzt werden und wie sie typischerweise verwendet werden.
| Bibliothek | Beste Anwendungsfälle | Umgebungsunterstützung | Stil |
|---|---|---|---|
| tqdm | Datenverarbeitung und ML-Schleifen | Terminal, Jupyter Notebook | Einfach und informativ |
| rich | Polierte CLI-Tools | Terminal, Jupyter Notebook | Farbenfroh und stilvoll |
| alive-progress | Animierte langwierige Aufgaben | Terminal, begrenzte Notebook-Unterstützung | Animiert und dynamisch |
| Halo | Unbestimmte Aufgaben | Nur Terminal | Spinner-basiert |
| ipywidgets | Interaktive Experimente | Nur Jupyter Notebook | Native Notebook-UI |
| progress | Einfache Skripte und Batch-Jobs | Nur Terminal | Minimal und klassisch |
| click | Befehlszeilenwerkzeuge | Terminal (CLI) | Funktionale CLI-Ausgabe |
Abid Ali Awan ist ein zertifizierter Datenwissenschaftler, der es liebt, Maschinenlernmodelle zu entwickeln. Derzeit konzentriert er sich auf die Erstellung von Inhalten und das Schreiben technischer Blogs über Maschinenlernen und Technologien der Datenwissenschaft. Abid hat einen Master-Abschluss in Technologiemanagement und einen Bachelor-Abschluss in Telekommunikationsengineering. Seine Vision ist es, ein KI-Produkt zu entwickeln, das graphenbasierte neuronale Netzwerke für Studenten nutzt, die mit psychischen Erkrankungen kämpfen.
Abonnieren Sie den kostenlosen Newsletter, um das E-Book „KDnuggets Artificial Intelligence Pocket Dictionary“ sowie die neuesten Informationen zu Datenwissenschaft, Maschinenlernen, KI und Analytik direkt in Ihr Postfach zu erhalten.