Accéder au contenu principal

Fonction Python time.sleep()

Dans ce tutoriel, vous apprendrez comment fonctionne la fonction time.sleep() et comment l'appliquer dans votre programme.
Actualisé 15 janv. 2025  · 7 min de lecture

Dans ce tutoriel, vous découvrirez la fonction Python sleep() qui permet d'introduire un délai dans l'exécution de votre programme. Il s'agit d'une fonction pratique, en particulier lorsque votre programme fonctionne avec des threads ou même lorsque vous travaillez avec des graphiques et des animations. La fonction " sleep" est disponible dans le module time qui contient de nombreuses autres fonctions relatives à l'accès au temps et aux conversions. Et bien que ce module soit disponible sur toutes les plateformes, toutes les fonctions qu'il contient ne sont pas forcément disponibles ou ne fonctionnent pas exactement de la même manière. Examinons le module time.sleep() plus en détail...

Module temps

Ce module fournit des fonctions qui permettent de manipuler le temps et de l'utiliser dans votre programme. Il existe d'autres modules "cousins" qui permettent de travailler plus précisément avec la date et le calendrier au sein de votre système, mais ce module est davantage axé sur la manipulation du temps - en travaillant avec les heures jusqu'aux millisecondes.

Parmi les termes que vous entendrez généralement lorsque vous travaillerez avec le temps dans le monde de l'informatique, il y a celui d'époque.

Mais d'abord, assurez-vous d'importer le module de temps. Pour ce faire, il suffit de taper :

import time

époque

C'est à ce moment précis que le temps a réellement commencé. Cela ne signifie pas que notre système solaire est né ou que l'homme a commencé à mesurer le temps, mais c'est relativement proche de maintenant. Pour le système UNIX, l'époque est le 1er janvier 1970, 00:00:00 (UTC) (c'était un jeudi au cas où vous vous poseriez la question...). Pour connaître l'époque de votre système, vous pouvez taper :

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)

Vous obtiendrez ainsi l'année (tm_year), le mois (tm_mon), le jour (tm_mday), l'heure (tm_hour), la minute (tm_min) et la seconde (tm_sec). Avec la semaine du jour (tm_wday) - c'est 3 puisque le lundi est marqué comme le début de la semaine et est compté comme 0. Il est suivi du jour de l'année (tm_yday) ou jour julien. Enfin, l'indicateur d'heure d'été (tm_isdst) - DST signifie "daylight saving time" (heure d'été). Ce champ a une valeur de 0, -1 ou 1. 0, si l'heure d'été n'est pas en vigueur. 1, si l'heure d'été est en vigueur et enfin -1, si l'information n'est pas disponible. Pourquoi ne pas être disponible, demandez-vous ? Parce que les règles relatives à l'heure d'été sont déterminées par la législation locale et peuvent être modifiées.

La plupart des ordinateurs enregistrent l'heure et la date sous la forme d'une différence de secondes entre la date du 1er janvier 1970, 00:00:00 (UTC) et l'heure à enregistrer. Donc, si vous allez de l'avant et tapez :

time.time()
1548611182.872067

Vous obtiendrez ainsi le nombre de secondes écoulées depuis le 1er janvier 1970, 00:00:00 (UTC). Cette différence est ce que nous appelons l'horodatage ou le temps d'époque UNIX, et elle se présente sous la forme d'un nombre à virgule flottante. Pour être honnête, la différence n'est pas en termes de secondes mais de ticks. Dans la plupart des systèmes UNIX, l'horloge fait "tic-tac" 50 à 100 fois par seconde. Ainsi, le temps d'époque UNIX est en fait le nombre de ticks qui se sont produits depuis le 1er janvier 1970, 00:00:00 UTC.

Maintenant que vous avez une idée de ce que fait le module de temps. Examinons la fonction sleep().

time.sleep()

En d'autres termes, le site time.sleep() prend comme argument le nombre de secondes pendant lesquelles vous souhaitez que le programme s'arrête ou soit suspendu avant de passer à l'étape suivante. Voyons cela à l'aide d'un programme simple, dans lequel nous affichons simplement l'heure actuelle avec un arrêt de 5 secondes entre l'exécution suivante - introduisant ainsi une différence de 5 secondes entre chaque impression de l'heure actuelle. L'utilisation de time.ctime() permet de voir l'heure locale dans un format agréable.

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

La syntaxe de la fonction est la suivante : time.sleep(sec)sec est l'argument qui spécifie le nombre de secondes pendant lesquelles le programme doit être suspendu. La fonction ne renvoie aucune valeur.

sec - L'argument est en fait un nombre à virgule flottante, ce qui vous permet de rendre le temps de sommeil plus précis. Cependant, cela est un peu douteux car la durée réelle de la suspension peut être inférieure à la durée demandée ou arbitrairement plus longue. Pour mieux comprendre pourquoi, imaginez que le programme soit un problème ou une tâche gérée par un autre vendeur dans un magasin - lorsque vous suspendez le programme, la personne qui y travaille se voit immédiatement attribuer un autre client. Mais peu de temps après (avant les secondes de sommeil spécifiées), un autre vendeur libre reprend la tâche et l'achève - le temps de suspension peut donc être inférieur. De même, le temps de suspension peut être plus long que demandé d'une durée arbitraire en raison de la programmation des tâches pour tous les vendeurs du magasin, et le programme doit donc attendre son tour. En interne, c'est bien sûr plus complexe, et de nombreuses façons de gérer cela ont déjà été introduites.

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 ne donne aucune garantie sur le comportement de ces appels de fonction, en particulier entre plates-formes. La raison sous-jacente est que la plupart des fonctions définies dans ce module appellent des fonctions de la bibliothèque de la plate-forme C portant le même nom. La précision dépend vraiment de la précision du sommeil du système d'exploitation sous-jacent et si vous devez aller plus loin, il vous sera utile de consulter la documentation de la plate-forme car la sémantique de ces fonctions varie d'une plate-forme à l'autre.

Cependant, il y a de bonnes nouvelles : à partir de la version 3.5 de Python, le site time.sleep(secs) dort maintenant au moins secs(argument passé) même si le sommeil est interrompu par un signal (encore une fois, imaginez que le signal soit un vendeur comme discuté ci-dessus), sauf si le gestionnaire du signal lève une exception.

Que se passe-t-il donc en interne lorsque vous utilisez time.sleep()?
Cette partie est destinée à mieux comprendre la fonction, mais n'est pas nécessaire pour commencer à utiliser la fonction elle-même. La fonction utilise en fait l'horloge système, un dispositif électronique dans un ordinateur qui émet un signal régulier à haute fréquence qui synchronise tous les composants internes et fait partie du processeur. Ce module déclenche ce que l'on appelle des demandes d'interruption (IRQ) à des intervalles programmables. Les IRQ sont chargées d'interrompre le code en cours d'exécution du processeur, de sauvegarder l'état actuel avant de passer le contrôle à un autre morceau de code dans le système d'exploitation.
La fonction sleep() appelle donc une routine d'achèvement d'E/S sous-jacente ou un appel de procédure asynchrone pour bloquer le processus. Le système d'exploitation notera que vous ne voulez rien faire d'autre jusqu'à ce qu'un délai d'attente soit atteint. Ainsi, une fois ce délai atteint, le système d'exploitation reprend votre processus à partir du dernier état dont il se souvient. De votre point de vue, un simple appel à la fonction time.sleep() a été effectué.

Félicitations pour avoir maîtrisé la fonction time.sleep(). N'oubliez pas de consulter le cours Python Data Science Toolbox (Part 1) de DataCamp pour en savoir plus sur les fonctions en Python.

Sujets

En savoir plus sur Python

cours

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.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus