Anmelden
Anmelden

Verwendung von time.sleep() in Python

Verwendung von time.sleep() in Python
Hostman Team
Technical writer
Python
14.10.2025
Reading time: 8 min

Manchmal muss ein Programm eine kurze Pause einlegen — zum Beispiel, um auf Daten zu warten, dem Benutzer Zeit zur Eingabe zu geben oder die Systemlast zu verringern. Eine der einfachsten Möglichkeiten, dies in Python zu erreichen, ist die Funktion time.sleep(), die die Programmausführung für ein bestimmtes Zeitintervall anhält.

In diesem Artikel sehen wir uns an, wie time.sleep() in Python funktioniert, welche Besonderheiten und Alternativen es gibt und welche typischen Fehler auftreten können. Außerdem besprechen wir, wann der Einsatz in mehrthreadigen und asynchronen Programmen sinnvoll ist — und wann besser asyncio.sleep() oder andere Warte-Mechanismen verwendet werden sollten.

Was ist die Funktion sleep() in Python?

Die Funktion sleep() wurde in die Standardbibliothek von Python aufgenommen, um das Erstellen von Pausen im Code zu vereinfachen. Sie befindet sich im Modul time und wird als time.sleep() aufgerufen. Damit kann die Programmausführung für eine bestimmte Anzahl von Sekunden angehalten werden.

In der Praxis ist sleep() nützlich für kurze Pausen in Testumgebungen, Verzögerungen zwischen API-Anfragen oder Zeitintervalle beim Senden von Nachrichten. Man darf sie jedoch nicht mit Systemfunktionen wie Thread-Synchronisation oder präzisem Timing verwechseln — dafür gibt es spezialisierte Werkzeuge.

Wie time.sleep() funktioniert

Die Funktion time.sleep() pausiert den aktuellen Thread für die angegebene Anzahl von Sekunden. In einem mehrthreadigen Programm laufen andere Threads weiter, während der Thread, in dem time.sleep() aufgerufen wurde, „eingefroren“ bleibt.

Wichtig: time.sleep() blockiert die Codeausführung an dieser Stelle — alle nachfolgenden Operationen werden verzögert. Wenn man das ignoriert, kann dies zu Leistungseinbußen oder einer eingefrorenen Benutzeroberfläche in Desktop-Anwendungen führen.

Wann time.sleep() verwendet wird

Die Funktion wird am häufigsten in Tests und Debugging-Szenarien eingesetzt, wenn eine kurze Verzögerung erforderlich ist — zum Beispiel, um die Antwort einer API zu überprüfen oder auf eine Serverreaktion zu warten. Außerdem wird sie genutzt, um Skripte schrittweise auszuführen, dem Benutzer Zeit zum Lesen oder Eingeben zu geben oder Prozesse in Demos zu simulieren.

Bei externen Diensten hilft time.sleep(), Sperren oder Rate-Limits durch zu häufige Anfragen zu vermeiden. Es ist jedoch nicht die einzige Möglichkeit, den Code zu verlangsamen — im Folgenden betrachten wir einige Alternativen.

Verwendung von time.sleep() in Python

Die Nutzung von time.sleep() ist einfach und selbst für Einsteiger leicht zu erlernen. Dennoch gibt es einige Feinheiten, die sich auf Performance und Debugging auswirken können.

Grundsyntax

Zuerst muss das Modul time importiert werden:

import time
time.sleep(5)

In diesem Beispiel pausiert das Programm für 5 Sekunden. Der übergebene Wert kann eine ganze Zahl oder ein Gleitkommawert sein — so lassen sich auch Bruchteile von Sekunden realisieren.

Syntax:

time.sleep(seconds)

Die Funktion gibt keinen Rückgabewert zurück. Das bedeutet, man kann nicht genau messen, wie präzise die Pause war — der Thread wird einfach für die angegebene Zeit angehalten.

Beispiel: Ausführungsverzögerung

Ein kurzes Beispiel mit Nachrichten, die im Abstand von 2 Sekunden ausgegeben werden:

import time
print("First message")
time.sleep(2)
print("Second message")
time.sleep(2)
print("Third message")

Beim Ausführen dieses Skripts sieht der Benutzer zwischen jeder Nachricht eine Pause von 2 Sekunden — genau so funktioniert eine Verzögerung mit time.sleep(2).

Parameter von time.sleep()

Die Funktion akzeptiert nur einen Parameter, der jedoch entweder ein Integer oder ein Float sein kann. Das bietet Flexibilität bei der Implementierung von Wartezeiten.

Übergabe in Sekunden

In den meisten Fällen wird eine ganze Zahl übergeben:

time.sleep(10)

Das Skript pausiert für 10 Sekunden — ideal für längere Pausen oder zeitgesteuerte API-Anfragen.

Verwendung von Sekundenbruchteilen (Millisekunden)

Manchmal reicht eine kurze Pause von wenigen Millisekunden. Das geht mit einem Gleitkommawert:

time.sleep(0.5)

Dies erzeugt eine Pause von einer halben Sekunde. Beachte jedoch, dass durch Betriebssystem- und Python-Timer-Limits die tatsächliche Dauer leicht höher sein kann. Für Echtzeitsysteme mit hoher Präzision sollten spezialisierte Timer verwendet werden.

Alternative Möglichkeiten für Pausen in Python

Obwohl time.sleep() am beliebtesten und am einfachsten ist, gibt es alternative Ansätze, die bei externen Ereignissen oder mehreren Threads besser geeignet sind.

1. Warten mit input()

Die einfachste Art, das Programm anzuhalten, ist input(). Es stoppt die Ausführung, bis der Benutzer Enter drückt oder eine Eingabe macht.

print("Press Enter to continue...")
input()
print("Resuming program execution")

Technisch gesehen ist das keine zeitgesteuerte Pause, sondern ein Eingabe-Warten. Diese Methode ist selten in automatisierten Skripten nützlich, kann aber in Debugging- oder Konsolenprogrammen hilfreich sein.

2. Verwendung von threading.Event()

In mehrthreadigen Programmen kann ein Synchronisationsobjekt wie threading.Event() eingesetzt werden, um Threads zu blockieren, bis ein Signal empfangen wird.

import threading
event = threading.Event()

def worker():
    print("Starting work in thread")
    event.wait()
    print("Event received, resuming work")

thread = threading.Thread(target=worker)
thread.start()

import time
time.sleep(3)
event.set()

Hier bleibt der Thread blockiert, bis event.set() aufgerufen wird. Das ermöglicht flexible Kontrolle, da der Thread sofort fortgesetzt werden kann, ohne die volle Zeit abzuwarten.

3. Asynchrone Programme mit asyncio.sleep()

In asynchronem Python-Code (Modul asyncio) wird asyncio.sleep() verwendet. Im Gegensatz zu time.sleep() blockiert es nicht den gesamten Thread, sondern nur die aktuelle Coroutine, während andere Tasks weiterlaufen.

import asyncio

async def main():
    print("Start async work")
    await asyncio.sleep(2)
    print("2 seconds passed, resuming")

asyncio.run(main())

Das ist besonders nützlich, wenn mehrere asynchrone Funktionen parallel laufen sollen. Würde man time.sleep() in diesem Kontext verwenden, würde es die gesamte Event Loop blockieren.

Häufige Probleme mit time.sleep()

Obwohl time.sleep() einfach ist, kann unsachgemäßer Gebrauch zu unerwarteten Blockaden führen. Deshalb sollte man genau verstehen, wie sie den Programmablauf beeinflusst.

Blockierung des Hauptthreads

time.sleep() blockiert den Thread, in dem sie aufgerufen wird. fWenn sie im Hauptthread einer GUI-Anwendung (z. B. Tkinter oder PyQt) verwendet wird, friert die Oberfläche ein.

💡 Tipp:
Verwende time.sleep() nur in Neben-Threads, oder nutze asyncio.sleep() für nicht-blockierende Verzögerungen. In grafischen Anwendungen sind Timer (z. B. QTimer, after()) besser geeignet.

Verwendung in mehrthreadigem und asynchronem Code

In mehrthreadigem Code kann time.sleep() unabhängig in jedem Thread aufgerufen werden, aber beachte: Sie gibt den Global Interpreter Lock (GIL) nicht automatisch frei.
Ob andere Threads laufen können, hängt vom Thread-Scheduler des Betriebssystems ab.

In asynchronem Code sollte time.sleep() nicht innerhalb der Event Loop verwendet werden, da sie diese blockiert. Verwende stattdessen asyncio.sleep(), das den Scheduler weiterarbeiten lässt.

Praxisbeispiel: API-Abfrage mit Pausen

Angenommen, du schreibst ein Skript, das eine API regelmäßig abfragt — aber laut API-Regeln nicht öfter als alle 30 Sekunden. Eine einfache Lösung mit time.sleep():

import time
def poll_api():
    print("Making API request...")
def main():
    while True:
        poll_api()
        time.sleep(30)
if __name__ == "__main__":
    main()

Nach jeder Anfrage pausiert das Skript 30 Sekunden. So werden Rate-Limits eingehalten.

Asynchrone Variante:

import asyncio
async def poll_api():
    print("Making API request...")
async def main():
    while True:
        await poll_api()
        await asyncio.sleep(30)
if __name__ == "__main__":
    asyncio.run(main())

Diese Version blockiert das Programm nicht komplett — andere Tasks können parallel laufen. Das ist skalierbarer und effizienter.

Fazit

Das Organisieren von Pausen und Verzögerungen ist ein wichtiger Bestandteil der Python-Entwicklung. time.sleep() ist dabei das naheliegendste Werkzeug, doch die Wahl zwischen time.sleep(), asyncio.sleep() und anderen Methoden hängt von der Programmarchitektur ab.

Empfehlungen:

  • Verwende time.sleep() für kurze Verzögerungen, Tests oder Demo-Ausgaben.

  • Vermeide Blockierungen im Hauptthread von GUI-Anwendungen.

  • In asynchronem Code: nutze asyncio.sleep() statt time.sleep().

  • In mehrthreadigen Programmen: beachte, dass nur der aktuelle Thread pausiert.

  • Für Ereignis- oder Benutzereingaben können threading.Event() oder input() geeigneter sein.
Python
14.10.2025
Reading time: 8 min

Ähnlich

Haben Sie Fragen,
Anmerkungen oder Bedenken?

Unsere Fachleute stehen Ihnen jederzeit zur Verfügung,
egal ob Sie Hilfe benötigen oder nicht wissen, wo Sie anfangen sollen.
E-Mail an uns
Hostman's Support