Lernpfad
Fortschrittsbalken in Python: Ein vollständiger Leitfaden mit Beispielen
In den Apps von heute wollen die Nutzer/innen sofortiges Feedback, vor allem, wenn die Aufgaben lange dauern. Python Fortschrittsbalken sind eine klare und einfache Möglichkeit, um zu zeigen, dass im Hintergrund etwas passiert. Ein aussagekräftiger Fortschrittsbalken hilft, ein Programm schneller zu machen, verleiht ihm einen professionellen Touch und verbessert die Benutzerfreundlichkeit.
In diesem Artikel erfährst du, wie du Python-Fortschrittsbalken mit beliebten Bibliotheken wie tqdm
, progress
, progressbar2
, alive-progress
und Tkinter
implementierst und wie du die Benutzerfreundlichkeit und Leistung deiner Anwendung verbessern kannst.
Wenn du mehr über Python-Konzepte erfahren möchtest, besuche unseren Lernpfad Grundlagen der Python-Programmierung.
Was sind Fortschrittsbalken in Python?
Fortschrittsbalken sind allgegenwärtig. Sie werden oft für Dateidownloads, Softwareinstallationen und ETL-Pipelines. Sie sind auch nützlich, um den Fortschritt beim Training von Machine Learning-Modellen zu verfolgen.
Der Fortschrittsbalken zeigt an, wie viel von einer Aufgabe erledigt ist und wie viel noch fehlt. Sie kann als Text in einer Befehlszeilenschnittstelle (CLI) oder als visueller Balken in einer grafischen Benutzeroberfläche (GUI) erscheinen.
Fortschrittsbalken verbessern das Nutzererlebnis. Sie geben Echtzeit-Updates und zeigen den Nutzern ihren Fortschritt im Prozess. Wenn eine Verzögerung auftritt, können die Nutzer/innen entscheiden, ob sie eingreifen oder warten wollen. Diese Sichtbarkeit verringert die Frustration und lässt die Wartezeiten kürzer erscheinen. Die Nutzerinnen und Nutzer starren nicht auf einen statischen Bildschirm und fragen sich, ob etwas passiert; sie bleiben involviert und haben die Gewissheit, dass es Fortschritte gibt.
Entwickler/innen verwenden Lernpfade, um die Leistung von Anwendungen zu verfolgen. Sie helfen dabei, Engpässe zu erkennen, Code zu bewerten und die Dauer von Aufgaben zu verfolgen. Fortschrittsbalken in Skripten und Workflows zeigen klare Statusaktualisierungen an. Sie helfen den Nutzern, langlaufende Prozesse besser zu verstehen. Sie verbessern auch die Benutzerfreundlichkeit von interaktiven Tools und Notizbüchern.
Fortschrittsbalken können auch als einfache Form der Leistungskontrolle dienen. Sie zeigen, wie lange jede Aufgabe dauert. Das hilft den Entwicklern, langsame Phasen zu erkennen und die Effizienz zu messen. So lassen sich die verschiedenen Umsetzungen leicht vergleichen.
Fortschrittsbalken in der Befehlszeile
Fortschrittsbalken in der Kommandozeile geben visuelles Feedback für lang laufende Aufgaben direkt im Terminal und machen Skripte informativer und benutzerfreundlicher. Python bietet verschiedene Bibliotheken, die sich durch ihre Geschwindigkeit, Anpassungsfähigkeit und ihren visuellen Stil auszeichnen. Wir werden uns vier von ihnen ansehen: tqdm
, progress
, progressbar2
, und alive-progress
.
Tqdm: der Standard für Geschwindigkeit und Einfachheit
tqdm
ist eine beliebte Bibliothek in Python, um Fortschrittsbalken zu erstellen. Es bietet schnelle und vielseitige Fortschrittsanzeigen für Schleifen und Iterables. Er verfolgt die Lernpfade und berechnet sowohl die verbleibende als auch die abgelaufene Zeit. Diese Informationen aktualisieren die Leiste in Echtzeit. tqdm
arbeitet im Hintergrund. Sie sagt voraus, wie viel Zeit noch bleibt und überspringt Aktualisierungen, die nicht benötigt werden. Es ist einfach zu erlernen, verbraucht wenig Speicherplatz und wird von einer starken Community unterstützt.
Installationsprozess
Eine einfache Möglichkeit, tqdm
zu installieren, ist die Verwendung des pip
Installers. Gib den folgenden Befehl in das Terminal ein.
pip install tqdm
Drucke die Versionsnummer aus, um sicherzustellen, dass die Bibliothek richtig installiert ist.
import tqdm
print(tqdm.__version__)
4.67.1
Grundlegende Verwendung von tqdm
tqdm
ist einfach zu bedienen. Importiere die Bibliothek. Wickle eine beliebige Iterable mit tqdm(iterable) ein, um einen Fortschrittsbalken anzuzeigen.
Anstatt tqdm(range(n))
zu schreiben, kannst du der Einfachheit halber die Abkürzung trange(n)
verwenden.
from tqdm import trange
import time
for _ in trange(100, desc="Processing"):
# Do stuff here
time.sleep(0.05) # simulate a task
Dieser Code zeigt während der Ausführung einen Fortschrittsbalken an.
Der Fortschrittsbalken zeigt
- Prozentsatz abgeschlossen (22%)
- Anzahl der abgeschlossenen Iterationen von insgesamt (224/1000)
- Verstrichene Zeit und geschätzte verbleibende Zeit (12 Sekunden verstrichen, 42 Sekunden verbleibend)
- Iterationen pro Sekunde (18,09 it/s).
Um dem Fortschrittsbalken eine Beschreibung hinzuzufügen, gib die Option desc
an.
for i in trange(1000, desc='Processing'): # description
# Simulate a task
time.sleep(0.05)
Verschachtelte Fortschrittsbalken
Mit den verschachtelten Lernpfaden in tqdm kannst du den Fortschritt über mehrere Schleifen hinweg verfolgen. Sie sind auch nützlich, wenn du mehrere Arbeitsschritte verfolgen musst. Beispiele dafür sind Stapelverarbeitung, verschachtelte Schleifen und Modelltraining.
Wickle jede Schleife mit tqdm in eine verschachtelte Schleife ein. Verwende die Argumente position und leave, um zu bestimmen, wie sie erscheinen.
position
: Legt die vertikale Position jedes Fortschrittsbalkens fest. position=0 ist der oberste Balken, position=1 erscheint darunter und so weiter.leave
: Wenn leave=True, bleibt der Fortschrittsbalken auf dem Bildschirm, nachdem er fertig ist. Wenn leave=False, verschwindet es, um Unordnung zu vermeiden.
for i in trange(3, desc='Outer loop', leave=True):
for j in trange(5, desc='Inner loop', leave=False):
for j in trange(4, desc='Inner inner loop', leave=False):
time.sleep(0.05)
Verschachtelte Fortschrittsbalken zeigen eine klare Hierarchie. Sie helfen dir, die verschiedenen Phasen einer Aufgabe zu visualisieren. Sie bieten detaillierte Einblicke auf verschiedenen Ebenen. Das hilft den Entwicklern, Verlangsamungen oder Engpässe leicht zu erkennen.
Pandas Integration
Tqdm lässt sich gut mit Pandas integrieren. Es bietet eine einfache Möglichkeit, Fortschrittsbalken zu DataFrame- und Serienaufgaben hinzuzufügen. Sie zeigt den Fortschritt von Funktionen wie apply
, groupby
und map
in Echtzeit an. Diese Funktionen können bei großen Datensätzen langsam sein.
Um diese Funktion zu aktivieren, rufe tqdm.pandas() auf. Dann verwende progress_apply
anstelle von Pandas' regulärer apply
Methode. Dadurch wird ein Fortschrittsbalken angezeigt, wenn deine Funktion über Zeilen oder Spalten läuft. Du kannst den Fortschritt der Operation sehen, ohne deinen Code neu zu schreiben.
Im folgenden Programm erstellen wir einen DataFrame mit einer Spalte namens "Zahlen". Diese Spalte enthält ganze Zahlen von 0 bis 1000. Dann erzeugen wir eine neue Spalte, indem wir eine "langsame" Operation namens slow_squared
anwenden.
Statt der standardmäßigen Pandas-Funktion apply verwenden wir progress_apply
von tqdm. Während des Vorgangs wird ein Fortschrittsbalken angezeigt. Es zeigt in Echtzeit an, wie weit die Bearbeitung fortgeschritten ist.
import pandas as pd
from tqdm import tqdm
import time
# Simulate a time-consuming operation
def slow_square(x):
time.sleep(0.01)
return x**2
# Create a sample DataFrame
df = pd.DataFrame({'numbers': range(1000)})
# Initialize tqdm for pandas
tqdm.pandas(desc="Processing")
# Use progress_apply instead of apply
df['slow_squared'] = df['numbers'].progress_apply(slow_square)
# Print the result
print(df.head())
Die Ausgabe des Codes sieht folgendermaßen aus.
Wir können progress_apply
für andere DataFrame-Operationen wie groupby
verwenden.
grouped = df.groupby('numbers').progress_apply(lambda g: g.sum())
Anpassungsoptionen
Mit Tqdm kannst du die Fortschrittsbalken an verschiedene Umgebungen und Nutzerbedürfnisse anpassen. Du kannst die Breite mit ncols
anpassen. Die bar_format argument
gibt dir die volle Kontrolle über das Textlayout. Wenn du dynamic_ncols=True
einstellst, wird die Größe der Leiste automatisch an das Terminal angepasst.
Leistungsüberlegungen speziell für tqdm
Tqdm ist schnell und leicht. Selbst in schnellen Schleifen wird nur wenig Overhead hinzugefügt. Du kannst die Fortschrittsbalken mit disable=True
deaktivieren. Das ist hilfreich in Produktionsumgebungen, in denen es auf Leistung ankommt. Bei schnellen Schleifen kann es zu viel sein, den Balken jedes Mal zu aktualisieren. Mit tqdm
kannst du also selbst bestimmen, wie oft sie aktualisiert wird. Du kannst Parameter wie mininterval
und maxinterval
verwenden.
Fortschritt: Anpassbare Stile und Spinner
Die Fortschritt Bibliothek in Python kannst du einfach textbasierte Fortschrittsbalken für die Kommandozeile erstellen. Es verfügt über eine unkomplizierte API. Es unterstützt sowohl Fortschrittsbalken als auch Spinner und ermöglicht eine grundlegende Anpassung der Ausgabe. Es ist klein, schnell und hat keine Abhängigkeiten. Das macht es ideal für schnelle Skripte und einfache Setups.
Die Bibliothek progress
enthält sieben integrierte Stile für Fortschrittsbalken: Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar und Shadybar.
Zum Einrichten verwendest du pip install.
pip install progress
Dazu importierst du den gewünschten Stil, instanziierst eine Variable, verwendest .next()
in der Schleife und .finish()
, wenn der Prozess abgeschlossen ist. Um z.B. einen ChargingBar zu verwenden, benutze den folgenden Code.
import time
from progress.bar import ChargingBar
bar = ChargingBar('Processing', max=20)
for i in range(20):
# Do some work
time.sleep(0.5)
bar.next()
bar.finish()
`
Progress
enthält auch Spinner für Aufgaben mit unbekannter Dauer. Der Code zur Implementierung eines Spinners ist ganz einfach.
import time
from progress.spinner import Spinner
spinner = Spinner('Processing... ')
# Spinner during a task of unknown duration.
for _ in range(50):
# Do stuff
time.sleep(0.1) # simulate a running task
spinner.next()
spinner.finish()
Dieser Code ergibt die Beschreibung ("Processing..."), gefolgt von einem Spinner.
Die Progress-Bibliothek ist einfach und leichtgewichtig, aber es gibt einige Einschränkungen zu beachten. Es unterstützt keine Jupyter-Notebooks und kann die Größe nicht dynamisch ändern. Außerdem bietet sie weniger Anpassungsmöglichkeiten als Bibliotheken wie tqdm. Für einfache Kommandozeilenaufgaben ist sie gut geeignet, aber bei komplexen oder leistungsstarken Aufgaben kann sie Probleme bereiten.
Progressbar2: Verbesserte Anpassbarkeit und Kompatibilität
Progressbar2 ist eine leistungsstarke Python-Bibliothek. Es hilft dir, flexible und anpassbare Fortschrittsbalken für Kommandozeilenanwendungen zu erstellen. Es hat viele Widgets, wie z.B. Prozente, ETA, animierte Markierungen und Zähler. Das macht sie ideal für komplexere oder ausgefeilte CLI-Aufgaben.
Progressbar2 bietet mehr Kontroll- und Formatierungsmöglichkeiten als einfachere Bibliotheken wie progress. Außerdem funktioniert es besser mit Logging und Multithreading-Workflows.
Verwende zur Installation pip install.
pip install progressbar2
Die ProgressBar-Klasse in progressbar2 zeigt den aktuellen Stand des Fortschritts an. Dies geschieht mit einer Reihe von anpassbaren Widgets.
Ein Widget ist ein modularer Teil, der je nach Status des Fortschrittsbalkens aktualisiert wird. Dazu gehören der Prozentsatz der Fertigstellung, die verstrichene Zeit und die geschätzte verbleibende Zeit.
Du kannst aus vielen Arten von Widgets wählen. Dazu gehören Textbeschriftungen, Fortschrittsmarkierungen, Zähler, Timer, Spinner und benutzerdefinierte Formatierer. Mit dieser Variante kannst du das Aussehen und die Funktion der Leiste für deine App anpassen.
Die grundlegende Verwendung der Progressbar2 ist recht einfach.
import time
import progressbar
for i in progressbar.progressbar(range(1000)):
time.sleep(0.02)
Die Ausgabe zeigt den Prozentsatz der abgeschlossenen Iterationen, die abgeschlossenen Iterationen/Gesamtzahl der Iterationen, die abgelaufene Zeit und die geschätzte verbleibende Zeit an.
Fortschrittsbalken-Bibliotheken basieren in der Regel auf der Aktualisierung einer einzelnen Zeile im Terminal mithilfe von Wagenrückläufern (\r
). Das bedeutet, dass regelmäßige print()
Anweisungen den Balken nach unten drücken oder seine Ausgabe verfälschen können. Die Bibliothek progressbar2
bietet eine Möglichkeit, Nachrichten sicher zu drucken, ohne den Fortschrittsbalken zu beeinträchtigen.
import time
import progressbar
bar = progressbar.ProgressBar(redirect_stdout=True)
for i in range(10):
# Do some task
time.sleep(0.1)
# Print statement
print(f'Loop #{i}')
bar.update(i)
Die progressbar2-Bibliothek bietet durch ihr modulares Widget-System umfangreiche Anpassungsmöglichkeiten. Widgets zeigen Details im Fortschrittsbalken an, z. B. den Prozentsatz der abgeschlossenen Arbeiten, die verstrichene Zeit, die geschätzte verbleibende Zeit, Zähler oder Balkenanimationen. Du kannst diese Widgets mischen und kombinieren, um einen individuellen Fortschrittsbalken zu erstellen. Du kannst zum Beispiel den Prozentsatz und die voraussichtliche Ankunftszeit anzeigen. Oder du kannst weitere Details wie Dateinamen, Zeitstempel oder Spinner hinzufügen.
import time
import progressbar
# Define a custom set of widgets
widgets = [
'Progress: ', # Description text
progressbar.Percentage(), # Show percentage completed
' ',
progressbar.Bar(marker=':'), # Custom bar with specified marker
' ',
progressbar.ETA(), # Estimated time remaining
' | ',
progressbar.Timer(), # Time elapsed
]
# Initialize the progress bar with widgets
bar = progressbar.ProgressBar(widgets=widgets, max_value=50)
# Task
for i in range(50):
# Do stuff
time.sleep(0.1) # Simulate task
bar.update(i + 1)
Alive-progress: dynamische Animationen für moderne Terminals
Alive-Progress zeigt animierte Fortschrittsbalken, die sich in Echtzeit verändern. Das verleiht Kommandozeilen-Apps einen modernen und reaktionsschnellen Look. Der Balken bewegt sich vorwärts und zeigt hilfreiche Echtzeit-Metriken an. Sie zeigt den Prozentsatz der abgeschlossenen Arbeit, die verstrichene Zeit, die geschätzte verbleibende Zeit und die Iterationsgeschwindigkeit an. Das macht sie sowohl attraktiv als auch informativ.
Zum Installieren die alive-progress Bibliothek zu installieren, installiere sie mit pip.
pip install alive-progress
Wie auf der GitHub-Seite zu sehen ist, kannst du den folgenden Code verwenden, um eine Demo der Fähigkeiten zu sehen.
from alive_progress.styles import showtime
showtime()
Du wirst eine ähnliche Ausgabe wie die folgende sehen.
Mit Alive-progress kannst du mehrere Fortschrittsbalken gleichzeitig anzeigen und verwalten.
from alive_progress import alive_bar
import time
import threading
# Simulate a task
def simulate_task(name, total):
with alive_bar(total, title=name) as bar:
for _ in range(total):
# Do something
time.sleep(0.5)
bar()
# Define threads
threads = [
threading.Thread(target=simulate_task, args=('Task A', 50)),
threading.Thread(target=simulate_task, args=('Task B', 70)),
threading.Thread(target=simulate_task, args=('Task C', 40)),
]
# Start each thread
for t in threads:
t.start()
# Block the main thread until the program is finished
for t in threads:
t.join()
Die Bibliothek alive-progress
enthält mehrere integrierte Themen. Themen steuern Elemente wie den Animationsstil, die Zeichen, mit denen der Balken gefüllt wird, und den gesamten Bewegungseffekt. Häufige Themen sind classic
, pulse
und brackets
.
import time
from alive_progress import alive_bar
with alive_bar(100, bar='blocks') as bar:
for _ in range(100):
# Do something
time.sleep(0.02)
bar()
Pause/Fortsetzen - den Fortschritt vorübergehend anhalten und wieder aufnehmen, ohne den Status zu verlieren
from alive_progress import alive_bar
import time
# Run a task...
with alive_bar(100) as bar:
for i in range(50):
# Do something
time.sleep(0.02)
bar()
# Pause
bar.text('Temporarily pausing...')
time.sleep(1)
# Resume
bar.text('Resuming...')
for i in range(50):
time.sleep(0.02)
bar()
GUI Fortschrittsbalken mit Tkinter
Tkinter ist das Standard-GUI-Toolkit (Graphical User Interface) von Python. Das Design enthält integrierte Funktionen und ist sofort einsatzbereit, sodass du nichts zusätzlich installieren musst. Du kannst Fenster, Schaltflächen, Textfelder, Menüs, Fortschrittsbalken und vieles mehr erstellen. Tkinter ist ideal, um einfache Desktop-Anwendungen, interaktive Tools und Prototypen zu erstellen.
Ein einfacher Fortschrittsbalken kann mit folgendem Code erstellt werden.
import tkinter as tk
from tkinter import ttk
import time
def start_progress():
progress["value"] = 0
root.update_idletasks()
for i in range(101):
time.sleep(0.02)
progress["value"] = i
root.update_idletasks()
# Set up the window
root = tk.Tk()
root.title("Progress Bar")
root.geometry("300x100")
# Create a progress bar
progress = ttk.Progressbar(root, orient="horizontal", length=250, mode="determinate")
progress.pack(pady=20)
# Create a start button
start_button = ttk.Button(root, text="Start", command=start_progress)
start_button.pack()
# Start the tkinter loop
root.mainloop()
Ausgabe auf meinem Mac:
Es gibt zwei Modi für die ttk.Progressbar: determiniert und indeterminiert. Der Bestimmungsmodus wird verwendet, wenn die Dauer oder die Anzahl der Schritte einer Aufgabe bekannt ist. Der unbestimmte Modus wird verwendet, wenn die Dauer der Aufgabe unbekannt ist oder nicht in Schritten gemessen werden kann.
Der obige Code ist für einen bestimmten Modus, da wir wussten, dass die Länge der Aufgabe 250 Schritte beträgt. Es folgt ein Beispiel für einen unbestimmten Modus.
import tkinter as tk
from tkinter import ttk
import time
import threading
def start_indeterminate():
def run():
# 10 ms between moves
progress.start(10)
# Simulate task of unknown duration
time.sleep(10)
# Stop
progress.stop()
# Run in a thread, else the tkinter GUI loop is unresponsive
threading.Thread(target=run).start()
# Set up the GUI
root = tk.Tk()
root.title("Indeterminate Progress Bar")
root.geometry("300x100")
# Create an indeterminate progress bar
progress = ttk.Progressbar(root, mode='indeterminate', length=250)
progress.pack(pady=20)
# Start button
start_button = ttk.Button(root, text="Start", command=start_indeterminate)
start_button.pack()
# Run the tkinter loop
root.mainloop()
Beachte, dass der Fortschrittsbalken in einem separaten Thread ausgeführt wurde. Wenn wir run()
direkt im Haupt-Thread verwenden würden, würde der Aufruf von time.sleep()
die Haupt-Tkinter-Ereignisschleife blockieren und dazu führen, dass die gesamte GUI einfriert, einschließlich der Schaltflächenklicks, des Neuzeichnens des Fensters und der Animation des Fortschrittsbalkens.
Leistungsüberlegungen und Optimierung
Welche Bibliothek solltest du für deinen Fortschrittsbalken verwenden? Ein Teil der Entscheidung hängt von deinen Overhead-Anforderungen und deinem Anwendungsfall ab.
Bibliothek |
Overhead |
Anwendungsfall |
tqdm |
Sehr niedrig |
Schnelle Schleifen, Datenpipelines, minimale Auswirkungen auf die Leistung |
Fortschritt |
Niedrig |
Einfache CLI-Skripte, leichtgewichtig und ohne Abhängigkeiten |
progressbar2 |
Mäßig |
Benutzerdefinierte Layouts, ETA und Protokollierung; leichte Verlangsamung bei schnellen Aufgaben |
alive-progress |
Mäßig bis hoch |
Visuell reichhaltige Aufgaben, mehrstufige Ausgabe, flüssige Animationen; am besten für längere Aufgaben |
Um die Leistung zu verbessern, optimiere die Aktualisierungshäufigkeit. Eine Methode ist, den Balken nicht bei jeder Iteration zu aktualisieren. Das ist besonders wichtig bei schnellen oder hochfrequenten Schleifen. Verwende eine bedingte Logik, um alle N Schritte zu aktualisieren, zum Beispiel alle 100 Iterationen.
Deaktiviere bei kritischen Leistungseinstellungen oder Produktionscode die Fortschrittsbalken. Visuelles Feedback ist hier nicht nötig. Das spart Ressourcen und stellt sicher, dass die Logik für die Entwicklung oder das Debugging gleich bleibt.
Die Reduzierung von E/A-Vorgängen ist der Schlüssel zur Leistung. Das Schreiben auf das Terminal, die Festplatte oder das Netzwerk kann alles verlangsamen. Hier sind einige Strategien zur Reduzierung der E/A bei leistungsrelevanten Aufgaben.
- Puffert die Ausgabe und schreibt in Stapeln statt pro Iteration.
- Aktualisiere nur in bestimmten Zeitabständen oder unter bestimmten Bedingungen.
- Minimiere oder deaktiviere print() innerhalb von Schleifen.
- Füge Flags hinzu, um unnötige Ausgaben in der Produktion zu unterdrücken.
- Trenne E/A und Berechnungen mit Hilfe von Threads oder Multiprocessing.
- Komprimiere oder stapele große Schreibvorgänge, um die Häufigkeit der Festplatten-E/A zu reduzieren.
Best Practices für effektive Fortschrittsbalken
Werfen wir einen Blick auf einige der besten Praktiken, die du beim Erstellen von Fortschrittsbalken in Python beachten solltest.
Warum Fortschrittsbalken verwenden?
Es gibt viele gute Gründe, Fortschrittsbalken in deinen Anwendungen zu verwenden. Erstens bieten sie Echtzeit-Feedback, das den Nutzern die Gewissheit gibt, dass die Aufgaben voranschreiten und die Unsicherheit verringert. Diese Sichtbarkeit verbessert das Nutzererlebnis, lässt die Wartezeiten kürzer und die Interaktionen intuitiver erscheinen.
Zweitens ermöglichen Fortschrittsbalken durch die visuelle Verfolgung der Aufgabenerledigung eine einfache Leistungsüberwachung, so dass sowohl Nutzer/innen als auch Entwickler/innen Engpässe oder festgefahrene Prozesse bei lang andauernden Vorgängen schnell erkennen können. Und schließlich erhöht die Integration von Fortschrittsbalken die Professionalität der Benutzeroberfläche deiner Anwendung und vermittelt Klarheit und einen durchdachten, nutzerzentrierten Designansatz.
Bekannte Aufgaben vs. Aufgaben mit unbekannter Dauer
Verwende einen bestimmten Fortschrittsbalken für Aufgaben, die eine bestimmte Zeit haben. Dazu gehören Dateiverarbeitung, Schleifen oder Trainingsepochen für maschinelles Lernen. Diese Art von Balken füllt sich je nach messbarem Fortschritt und gibt den Nutzern ein klares Gefühl dafür, wie viel Arbeit noch vor ihnen liegt.
Für Aufgaben mit unbekannter Länge, wie API-Aufrufe oder Hintergrundprüfungen, verwende einen Spinner oder einen unbestimmten Balken. Sie sind ein visuelles Zeichen dafür, dass der Prozess noch nicht abgeschlossen ist, auch wenn wir nicht vorhersagen können, wie lange er dauern wird.
Welche Bibliothek soll ich benutzen?
Die Welche Bibliothek du verwendest, hängt von den Aufgaben ab, die du erfüllen willst.
Aufgabe |
Bibliothek |
Anmerkungen |
Hochfrequenz-Schleifen |
tqdm |
Leichtgewichtig, effizient; Minintervall verwenden, um Aktualisierungen zu reduzieren |
Einfache einmalige Skripte |
Fortschritt |
Minimale Einrichtung, keine Abhängigkeiten, ideal für schnelle Aufgaben |
Strukturierte oder benutzerdefinierte Ausgabe |
progressbar2 |
Widget-basiert, unterstützt ETA, Timer und Layout-Steuerung |
Mehrstufige oder verschachtelte Aufgaben |
tqdm, alive-progress |
Unterstützt verschachtelte Balken oder Multi-Balken-Anzeigen für übergeordnete Aufgaben |
CLI-Skripte mit visuellem Feinschliff |
alive-progress |
Animierte und moderne Grafik, reibungslose Benutzererfahrung |
GUI-Anwendungen |
tkinter |
Integriertes GUI-Toolkit mit bestimmten und unbestimmten Balken |
Anpassung
Wenn du die Fortschrittsbalken anpasst, solltest du dich auf Klarheit und nützliche Informationen konzentrieren. Bemühe dich um ein gutes Gleichgewicht zwischen den beiden. Ein klarer, einfacher Balken mit den wichtigsten Kennzahlen ist in der Regel besser als ein Balken, der mit zu vielen Informationen überladen ist.
Du kannst Bibliotheken wie progressbar2 und alive-progress verwenden. Mit ihnen kannst du das Layout, die Farbe und die Animation deiner Fortschrittsbalken ändern. Verwende Themen oder Formatierungen, um das Nutzererlebnis zu verbessern. Vermeide es, die Anzeige mit zu vielen Widgets oder komplexen Grafiken zu überladen. Das Ziel ist es, hilfreiches Feedback zu geben. Wir wollen vermeiden, dass der Nutzer abgelenkt wird oder sich überfordert fühlt.
Ausnahmebehandlung und Kompatibilitätstests
Wickle die Logik des Fortschrittsbalkens in Try-Except-Blöcke ein. Dies hilft, Störungen der Benutzeroberfläche oder Abstürze zu vermeiden, wenn während einer Aufgabe ein Fehler auftritt. Das ist wichtig bei Skripten, die lange laufen oder wenn du unsichere externe Abhängigkeiten verwendest.
Teste deine Fortschrittsbalken auch in verschiedenen Umgebungen. Überprüfe verschiedene Betriebssysteme, Terminaltypen und Anzeigebreiten. Auf diese Weise kannst du sicherstellen, dass ihr Verhalten konsistent bleibt.
Einige Bibliotheken verhalten sich in Jupyter-Notebooks, Remote-Terminals oder GUI-Shells anders. Eine frühzeitige Überprüfung der Kompatibilität kann helfen, unerwartete Probleme zu vermeiden. Auf diese Weise werden die Nutzerinnen und Nutzer eine reibungslosere Erfahrung in der Produktion haben.
Überlegungen zur Barrierefreiheit
Berücksichtige bei der Erstellung von Fortschrittsindikatoren die Barrierefreiheit. So erhalten alle Nutzer ein klares Feedback. Einige Vorschläge:
- Verlasse dich nicht nur auf Farben oder Animationen, um Fortschritte zu zeigen. Füge Textelemente wie Prozentsätze, Schrittzahlen oder Zeitschätzungen hinzu.
- Verwende klare, kontrastreiche Bilder für eine bessere Lesbarkeit.
- Stelle sicher, dass deine Fortschrittsbalken in GUI-Anwendungen gut mit Screenreadern funktionieren.
- Für Kommandozeilen-Tools solltest du Verbosity-Optionen in Betracht ziehen, die den Fortschritt im Klartext ausgeben.
Barrierefreiheit zu einer Priorität zu machen, erhöht die Benutzerfreundlichkeit. Außerdem macht es deine Tools umfassender und professioneller.
Fazit
Fortschrittsbalken sind eine einfache, aber starke Funktion für jede Python-Anwendung. Sie geben sofortiges Feedback, verbessern das Nutzererlebnis und verfolgen die Leistung und die Klarheit des Codes. Die Wahl der richtigen Fortschrittsbalken-Bibliothek ist entscheidend. Es kann deine Software verbessern, egal ob du ein schnelles Skript, ein Kommandozeilentool oder eine vollständige GUI-Anwendung entwickelst. Eine durchdachte Implementierung kann die Geschwindigkeit, die Professionalität und die Benutzerfreundlichkeit deiner Software verbessern. Durch die Priorisierung von Anpassung, Leistung, Kompatibilität und Barrierefreiheit sind die Fortschrittsbalken mehr als nur ein optisches Merkmal. Sie werden zu einem wichtigen Teil der Art und Weise, wie die Nutzer mit deiner Arbeit umgehen.
Um weiter zu lernen, schau dir diese Ressourcen an:
Python Fortschrittsbalken FAQs
Was ist ein Fortschrittsbalken?
Ein Fortschrittsbalken ist ein visueller Indikator, der anzeigt, wie viel von einer Aufgabe erledigt ist und wie viel noch fehlt. Sie verbessert das Nutzererlebnis, indem sie bei langen Einsätzen Feedback gibt.
Welche beliebten Bibliotheken für Fortschrittsbalken gibt es in Python?
Die gebräuchlichsten Bibliotheken sind tqdm
, progress
, progressbar2
, und alive-progress
.
Kann ich Fortschrittsbalken mit der Pandas-Bibliothek verwenden?
Ja, das kannst du. tqdm
integriert sich mit Pandas über progress_apply()
(statt apply
) und ähnliche Methoden.
Kann ich das Aussehen eines Fortschrittsbalkens anpassen?
Ja. Mit Bibliotheken wie tqdm
und progressbar2
kannst du das Layout, die Breite, die Farbe und die Aktualisierungsfrequenz anpassen.
Welche Bibliothek sollte ich für Jupyter Notebooks verwenden?
Die Bibliothek tqdm.notebook
lässt sich gut mit Jupyter integrieren.

Mark Pedigo, PhD, ist ein angesehener Datenwissenschaftler mit Fachwissen in den Bereichen Datenwissenschaft im Gesundheitswesen, Programmierung und Bildung. Mit einem Doktortitel in Mathematik, einem B.S. in Informatik und einem Professional Certificate in KI verbindet Mark technisches Wissen mit praktischer Problemlösungskompetenz. In seiner beruflichen Laufbahn war er unter anderem an der Aufdeckung von Betrug, der Vorhersage von Kindersterblichkeit und Finanzprognosen beteiligt und hat an der Kostenschätzungssoftware der NASA mitgearbeitet. Als Pädagoge hat er auf dem DataCamp und an der Washington University in St. Louis unterrichtet und junge Programmierer angeleitet. In seiner Freizeit genießt Mark mit seiner Frau Mandy und seinem Hund Harley die Natur in Minnesota und spielt Jazz-Piano.
Top Python Kurse
Kurs
Writing Efficient Python Code
Kurs
Intermediate Python for Developers
Der Blog
Q2 2023 DataCamp Donates Digest

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
2022-2023 DataCamp Classrooms Jahresbericht
Der Blog
Die 50 besten AWS-Interview-Fragen und Antworten für 2025
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
15 Min.
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.