Direkt zum Inhalt

Python time.sleep() Function

In diesem Lernprogramm lernst du, wie die Funktion time.sleep() funktioniert und wie du sie in deinem Programm anwenden kannst.
Aktualisierte 15. Jan. 2025  · 7 Min. Lesezeit

In diesem Lernprogramm lernst du die Python-Funktion sleep() kennen, mit der du eine Verzögerung in der Ausführung deines Programms einführen kannst. Diese Funktion ist besonders praktisch, wenn dein Programm mit Threads arbeitet oder wenn du mit Grafiken und Animationen arbeitest. Die Schlaffunktion ist innerhalb des Moduls time verfügbar, das viele andere Funktionen enthält, die sich mit Zeitzugriff und Umrechnungen befassen. Und obwohl dieses Modul auf allen Plattformen verfügbar ist, kann es sein, dass nicht alle Funktionen des Moduls verfügbar sind oder sogar auf die gleiche Weise funktionieren. Schauen wir uns das Modul time.sleep() genauer an...

Zeitmodul

Dieses Modul bietet Funktionen, mit denen du die Zeit manipulieren und in deinem Programm verwenden kannst. Es gibt noch andere "Cousin"-Module, die genauer mit dem Datum und dem Kalender in deinem System arbeiten, aber dieses Modul konzentriert sich mehr auf die Manipulation der Zeit - es arbeitet mit Stunden bis hinunter zu Millisekunden.

Einige der Begriffe, die du im Allgemeinen hörst, wenn du in der Welt der Informatik mit Zeit arbeitest, sind Epoche.

Aber zuerst musst du sicherstellen, dass du das Zeitmodul importierst. Gib dazu einfach ein:

import time

Epoche

Das ist genau der Punkt, an dem die Zeit wirklich begann. Damit ist nicht die Geburt unseres Sonnensystems gemeint oder der Zeitpunkt, an dem der Mensch begann, die Zeit zu messen, aber es ist tatsächlich relativ nah an der Gegenwart. Für das UNIX-System ist die Epoche der 1. Januar 1970, 00:00:00 (UTC) (Es war ein Donnerstag, falls du dich wunderst...) Um die Epoche auf deinem System herauszufinden, kannst du Folgendes eingeben:

time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

So erhältst du das Jahr (tm_year), den Monat (tm_mon), den Tag (tm_mday), die Stunde (tm_hour), die Minute (tm_min) und die Sekunde (tm_sec). Zusammen mit der Tageswoche (tm_wday) - diese ist 3, da der Montag als Wochenanfang markiert ist und als 0 gezählt wird. Dann folgt der Tag des Jahres (tm_yday), auch bekannt als julianischer Tag. Und schließlich das Sommerzeit-Flag (tm_isdst) - DST steht für Daylight Saving Time. Dieses Feld hat entweder die Werte 0, -1 oder 1. 0, wenn die Sommerzeit nicht in Kraft ist. 1, wenn die Sommerzeit in Kraft ist und schließlich -1, wenn die Information nicht verfügbar ist. Warum nicht verfügbar, fragst du? Denn die Regeln für die Sommerzeit werden durch lokale Gesetze bestimmt und können sich ändern.

Die meisten Computer speichern die Uhrzeit und das Datum als Differenz von Sekunden zwischen dem Datum 1. Januar 1970, 00:00:00 (UTC) und der zu speichernden Zeit. Wenn du also weitermachst und tippst:

time.time()
1548611182.872067

Hier siehst du die Sekunden, die seit dem 1. Januar 1970, 00:00:00 (UTC), vergangen sind. Diese Differenz nennen wir Zeitstempel oder UNIX-Epochenzeit, und sie hat die Form einer Fließkommazahl. Nun... um ehrlich zu sein, besteht der Unterschied nicht in Sekunden, sondern in Ticks. In den meisten UNIX-Systemen "tickt" die Uhr 50 bis 100 Mal in einer Sekunde. Die UNIX-Epochenzeit ist also die Anzahl der Ticks, die seit dem 1. Januar 1970, 00:00:00 UTC, aufgetreten sind.

So, jetzt hast du eine Vorstellung davon, was das Zeitmodul macht. Werfen wir einen Blick auf die Funktion sleep().

time.sleep()

Einfach ausgedrückt: time.sleep() nimmt als Argumente die Anzahl der Sekunden, die das Programm anhalten oder ausgesetzt werden soll, bevor es zum nächsten Schritt übergeht. Sehen wir uns das mit Hilfe eines einfachen Programms an, in dem wir einfach die aktuelle Zeit mit einer Pause von 5 Sekunden zwischen der nächsten Ausführung ausgeben - und somit eine Differenz von 5 Sekunden zwischen jedem Ausdruck der aktuellen Zeit einführen. Mit time.ctime() kannst du die Ortszeit in einer schön formatierten Version sehen.

for count in range(5):
    print(time.ctime())
    # Prints the current time with a five second difference
    time.sleep(5)
Sun Jan 27 18:46:24 2019
Sun Jan 27 18:46:29 2019
Sun Jan 27 18:46:34 2019
Sun Jan 27 18:46:39 2019
Sun Jan 27 18:46:44 2019

Die Syntax für die Funktion lautet: time.sleep(sec), wobei sec das Argument ist, das die Anzahl der Sekunden angibt, für die das Programm angehalten werden soll. Die Funktion gibt keinen Wert zurück.

sec - Das Argument ist eigentlich eine Fließkommazahl, daher kannst du die Schlafzeit genauer angeben. Das ist jedoch etwas zweifelhaft, denn die tatsächliche Aussetzungszeit kann kürzer als die beantragte Zeit oder willkürlich länger sein. Um besser zu verstehen, warum, stell dir vor, das Programm sei ein Problem oder eine Aufgabe, die von einem anderen Verkäufer in einem Geschäft bearbeitet wird - wenn du das Programm unterbrichst, wird der Person, die daran arbeitet, sofort ein anderer Kunde zugewiesen. Aber kurz danach (früher als die angegebenen Schlafsekunden) nimmt ein anderer freier Verkäufer die Aufgabe auf und führt sie weiter aus - daher kann die Aussetzungszeit kürzer sein. Ebenso kann die Aussetzungszeit um einen beliebigen Betrag länger sein als gewünscht, weil die Aufgaben für alle Verkäufer/innen im Laden geplant sind und das Programm daher warten muss, bis es an der Reihe ist. Intern ist das natürlich komplexer, und es gibt bereits viele Möglichkeiten, das zu handhaben.

for count in range(3):
    print(time.ctime())
    # Prints the current time with a five second difference
    time.sleep(2.5)
Sun Jan 27 18:46:49 2019
Sun Jan 27 18:46:52 2019
Sun Jan 27 18:46:54 2019

Python gibt keine Garantien für das Verhalten dieser Funktionsaufrufe, insbesondere plattformübergreifend. Der Grund dafür ist, dass die meisten der in diesem Modul definierten Funktionen Funktionen der Plattform-C-Bibliothek mit demselben Namen aufrufen. Die Genauigkeit hängt wirklich von der Schlafgenauigkeit des zugrundeliegenden Betriebssystems ab und wenn du weiter nachschlagen musst - es wird dir gut tun, in der Plattformdokumentation nachzuschauen, weil die Semantik dieser Funktionen von Plattform zu Plattform unterschiedlich ist.

Es gibt jedoch eine gute Nachricht: Ab Python Version 3.5 schläft time.sleep(secs) jetzt mindestens secs(Argument übergeben), auch wenn der Schlaf durch ein Signal unterbrochen wird (stell dir das Signal wie oben beschrieben als Verkäufer vor), es sei denn, der Signalhandler löst eine Ausnahme aus.

Was passiert also intern, wenn du time.sleep() verwendest?
Dieser Teil dient dazu, die Funktion noch besser zu verstehen, ist aber nicht erforderlich, damit du die Funktion selbst nutzen kannst. Die Funktion nutzt die Systemuhr, ein elektronisches Gerät in einem Computer, das ein stetiges Hochfrequenzsignal ausgibt, das alle internen Komponenten synchronisiert und Teil des Prozessors ist. Dieses Modul löst in programmierbaren Abständen so genannte Interrupt Requests (IRQs) aus. Die IRQs sind dafür verantwortlich, den aktuellen Code, den der Prozessor ausführt, zu unterbrechen und den aktuellen Zustand zu speichern, bevor die Kontrolle an einen anderen Teil des Codes im Betriebssystem übergeben wird.
Die Funktion sleep() ruft also die zugrunde liegende E/A-Abschlussroutine oder einen asynchronen Prozeduraufruf auf, um den Prozess zu blockieren. Das Betriebssystem merkt sich, dass du nichts weiter tun willst, bis eine bestimmte Zeitspanne erreicht ist. Sobald diese Zeitspanne erreicht ist, setzt das Betriebssystem deinen Prozess mit dem letzten gespeicherten Zustand fort. Und aus deiner Sicht wurde ein einfacher Aufruf der Funktion time.sleep() gemacht.

Herzlichen Glückwunsch, dass du die Funktion time.sleep() gemeistert hast. Schau dir unbedingt den Kurs Python Data Science Toolbox (Teil 1) von DataCamp an, um mehr über Funktionen in Python zu erfahren.

Themen

Erfahre mehr über Python

Kurs

Introduction to Python

4 hr
6M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

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

20 Min.

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

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

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.

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Mehr anzeigenMehr anzeigen