Direkt zum Inhalt

Fortschrittsbalken in Python: Ein vollständiger Leitfaden mit Beispielen

Lerne, wie du mit Python Fortschrittsbalken mit tqdm, progressbar2, alive-progress und Tkinter erstellst, mit Best Practices für eine bessere UX und App-Performance.
Aktualisierte 10. Mai 2025  · 13 Min. Lesezeit

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's photo
Author
Mark Pedigo
LinkedIn

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.

Themen

Top Python Kurse

Lernpfad

Python Programming Fundamentals

16 hr
Build your Python programming skills. Learn how to work with modules and packages, work with built-in data types, and write custom functions.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Mehr anzeigenMehr anzeigen