Maîtriser time.sleep() en Python : Bonnes pratiques, multithreading et exemples réels
Python time.sleep()
time.sleep() met en pause le thread actuel pendant un nombre spécifié de secondes.
Le module time de Python offre une gamme d'utilitaires pour travailler avec le temps. Parmi eux, time.sleep() est essentiel pour ajouter des délais délibérés, synchroniser des threads ou limiter des opérations.
Exemple 1 : Utilisation de base
import time
print("Affiché immédiatement.")
time.sleep(2.4)
print("Affiché après 2,4 secondes.")
Ce script simple démontre que time.sleep() accepte un argument à virgule flottante. En Python 3.5 et versions ultérieures, la fonction garantit une durée de sommeil minimale ; les versions antérieures peuvent dormir légèrement plus longtemps.
Exemple 2 : Horloge numérique
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local))
time.sleep(1)
La boucle affiche l'heure locale actuelle chaque seconde. Pour éviter d'encombrer le terminal, la version améliorée met à jour la même ligne :
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local), end="", flush=True)
print("\r", end="", flush=True)
time.sleep(1)
Voir la documentation Python pour time.sleep() pour plus de détails.
Comprendre les threads
Un processus est un programme en exécution ; les threads sont des unités légères au sein de ce processus. Plusieurs threads peuvent s'exécuter simultanément, partageant le même espace mémoire.
Exemple 3 : Multithreading simple
import threading
def greet_hello():
for _ in range(3):
print("Hello")
def greet_hi():
for _ in range(3):
print("Hi")
t1 = threading.Thread(target=greet_hello)
t2 = threading.Thread(target=greet_hi)
t1.start()
t2.start()
Comme t1 et t2 s'exécutent simultanément, l'ordre de sortie peut varier à chaque exécution.
time.sleep() dans des contextes multithreads
Dans les programmes mono-thread, time.sleep() arrête le processus entier. Dans un environnement multithread, seul le thread appelant est mis en pause, permettant aux autres threads de continuer.
Exemple 4 : Mise en pause de threads différemment
import threading, time
def say_hello():
for _ in range(4):
time.sleep(0.5)
print("Hello")
def say_hi():
for _ in range(4):
time.sleep(0.7)
print("Hi")
t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_hi)
t1.start()
t2.start()
Ici, un thread dort pendant 0,5 s tandis que l'autre dort pendant 0,7 s, illustrant un rythme indépendant.
Pour plus d'informations sur le threading, voir le module threading de Python.
Python
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser l'instruction pass en Python : Guide pratique
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Maîtriser les itérateurs Python : fonctionnement et création des vôtres
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Maîtriser Python datetime : guide pratique pour les dates, heures et fuseaux horaires
- Récupérer la date et l'heure actuelles en Python : Guide pratique