English English French French Spanish Spanish German German
Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Fonction Python Sleep : comment ajouter des retards au code

Python-Sleep-Fonction
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Ce didacticiel vous apprendra à utiliser la fonction sleep () du module de temps intégré de Python pour ajouter des délais au code.

Lorsque vous exécutez un programme Python simple, l'exécution du code se produit séquentiellement—une déclaration après l'autre—sans compromis. tout retard. Cependant, vous devrez peut-être retarder l'exécution du code dans certains cas. La sleep() La fonction du module de temps intégré Python vous aide à le faire.

Dans ce didacticiel, vous apprendrez la syntaxe d'utilisation de sleep() fonction en Python et plusieurs exemples pour comprendre comment cela fonctionne. Commençons!

Syntax of Python time.sleep()

, time module, intégré à la bibliothèque standard Python, fournit plusieurs fonctions utiles liées au temps. Dans un premier temps, importez le time module dans votre environnement de travail :

import time

le sleep() la fonction fait partie du time module, vous pouvez maintenant y accéder et l'utiliser avec la syntaxe générale suivante :

time.sleep(n) 

Ici, n est le nombre de secondes dormir. Il peut s'agir d'un nombre entier ou d'un nombre à virgule flottante.

Parfois, le délai requis peut être de quelques millisecondes. Dans ces cas, vous pouvez convertir la durée en millisecondes en secondes et l'utiliser dans l'appel à la fonction sleep. Par exemple, si vous souhaitez introduire un délai de 100 millisecondes, vous pouvez le spécifier à 0.1 seconde : time.sleep(0.1).

▶ Vous pouvez également importer uniquement sleep fonction du time module:

from time import sleep

Si vous utilisez la méthode ci-dessus pour l'importation, vous pouvez alors appeler le sleep() fonctionner directement—sans utiliser time.sleep().

Maintenant que vous avez appris la syntaxe du Python sleep() fonction, codez des exemples pour voir la fonction en action. Vous pouvez télécharger les scripts Python utilisés dans ce didacticiel à partir du python-sommeil dossier dans ce référentiel GitHub. 👩🏽‍💻

Delay Code Execution with sleep() 

Comme premier exemple, utilisons la fonction sleep pour retarder l'exécution d'un programme Python simple.

Retarder l'exécution du code

Dans l'extrait de code suivant :

  • La première print() l'instruction est exécutée sans délai.
  • On introduit alors un délai de 5 secondes en utilisant le sleep() la fonction. 
  • La deuxième print() ne sera exécutée qu'après la fin de l'opération de mise en veille.
# /python-sleep/simple_example.py
import time

print("Print now")
time.sleep(5)
print("Print after sleeping for 5 seconds")

Maintenant, exécutez le simple_example.py fichier et observez la sortie :

$ python3 simple_example.py
YouTube vidéo

Add Different Delays to a Code Block

Dans l'exemple précédent, nous avons introduit un délai fixe de 5 secondes entre l'exécution de deux print() déclarations. Ensuite, codons un autre exemple pour introduire différents temps de retard lors d'une boucle dans un itérable.

Dans cet exemple, nous aimerions faire ce qui suit :

  • Parcourez une phrase, accédez à chaque mot et imprimez-le. 
  • Après avoir imprimé chaque mot, nous aimerions attendre un certain temps avant d'imprimer le mot suivant dans la phrase.

Boucle sur une chaîne de chaînes

Considérez la chaîne, sentence. C'est une chaîne où chaque mot est une chaîne en soi.

Si nous parcourons la chaîne, nous obtiendrons chaque caractère, comme indiqué :

>>> sentence = "How long will this take?"
>>> for char in sentence:
...     print(char)

# Output (truncated for readability)
H
o
w
.
.
.
t
a
k
e
?

Mais ce n'est pas ce que nous voulons. Nous aimerions parcourir la phrase et accéder à chaque mot. Pour ce faire, nous pouvons appeler le split() méthode sur le sentence chaîne de caractères. Cela renverra une liste de chaînes - obtenue en divisant le sentence chaîne—sur tous occurrences d'espaces blancs.

>>> sentence.split()
['How', 'long', 'will', 'this', 'take?']
>>> for word in sentence.split():
...     print(word)

# Output
How
long
will
this
take?

Boucler à travers des itérables avec différents retards

Reprenons l'exemple :

  • sentence est la chaîne que nous aimerions parcourir pour accéder à chaque mot.
  • delay_times est la liste des temps de retard que nous utiliserons comme argument pour le sleep() fonction lors de chaque passage dans la boucle.

Ici, nous aimerions parcourir simultanément deux listes : la delay_times list et la liste des chaînes obtenues en divisant la sentence chaîne de caractères. Vous pouvez utiliser le zip() fonction pour effectuer cette itération parallèle.

La fonction Python zip(): zip(list1, list2) renvoie un itérateur de tuples, où chaque tuple contient l'élément à l'index i dans list1 et list2.

# /python-sleep/delay_times.py
import time

sleep_times = [3,4,1.5,2,0.75]
sentence = "How long will this take?"
for sleep_time,word in zip(sleep_times,sentence.split()):
    print(word)
    time.sleep(sleep_time)

Sans la fonction de veille, le contrôle passerait immédiatement à l'itération suivante. Étant donné que nous avons introduit un délai, le passage suivant dans la boucle n'a lieu qu'après la fin de l'opération de mise en veille.

Maintenant courez delay_times.py et observez la sortie :

$ python3 delay_times.py

Les mots suivants dans la chaîne seront imprimés après un délai. Le délai après l'impression du mot à l'index i dans la chaîne est le nombre à l'index i dans le delay_times liste.

YouTube vidéo

Countdown Timer in Python

Comme exemple suivant, codez un simple compte à rebours en Python.

Compte à rebours en Python

Définissons une fonction countDown():

# /python-sleep/countdown.py
import time

def countDown(n):
    for i in range(n,-1,-1):
        if i==0:
            print("Ready to go!")
        else:
             print(i)
             time.sleep(1)

Ensuite, analysons la définition du countDown() fonction:

  • La fonction prend un nombre n comme argument et décompte jusqu'à zéro à partir de ce nombre n.
  • Nous utilisons time.sleep(1) pour obtenir un délai d'une seconde entre les comptages.
  • Lorsque le compte atteint 0, la fonction imprime "Prêt à partir!".

🎯 Pour réaliser l'opération de compte à rebours, nous avons utilisé le range() fonction avec une valeur de pas négative de -1. range(n, -1, -1) nous aidera à parcourir la plage de nombres dans n, n - 1, n - 2, et ainsi de suite jusqu'à zéro. Rappelez-vous que le point final est exclu par défaut lors de l'utilisation de la range() la fonction.

Ajoutons ensuite un appel au countDown() fonction avec 5 comme argument.

countDown(5)

Exécutez maintenant le script countdown.py et voir le countDown fonction en action !

$ python3 countdown.py
YouTube vidéo

Sleep Function in Multithreading

Python filetage Le module offre des capacités de multithreading prêtes à l'emploi. En Python, le Global Interpreter Lock ou GIL garantit qu'il n'y a qu'un seul thread actif en cours d'exécution à tout moment.

python-sommeil-3

Cependant, pendant les opérations d'E/S et les opérations d'attente telles que la veille, le processeur peut suspendre l'exécution du thread en cours et basculer vers un autre thread en attente.

Pour comprendre comment cela fonctionne, prenons un exemple.

Créer et exécuter des threads en Python

Considérez les fonctions suivantes, func1(), func2() et func3(). Ils parcourent une série de nombres et les impriment. Ceci est suivi d'une opération de mise en veille, pendant un nombre spécifique de secondes, à chaque passage dans la boucle. Nous avons utilisé différents temps de retard pour chacune des fonctions afin de mieux comprendre comment l'exécution bascule entre les threads simultanément.

import time

def func1():
    for i in range(5):
        print(f"Running t1, print {i}.")
        time.sleep(2)

def func2():
    for i  in range(5):
         print(f"Running t2, print {i}.")
         time.sleep(1)


def func3():
    for i in range(4):
         print(f"Running t3, print {i}.")
         time.sleep(0.5)

En Python, vous pouvez utiliser le Thread() constructeur pour instancier un objet thread. Utilisation de la syntaxe threading.Thread(target = …, args = …) crée un thread qui exécute le target fonction avec l'argument spécifié dans le args tuple.

Dans cet exemple, les fonctions, func1, func2 et func3, n'acceptez aucun argument. Il suffit donc de spécifier uniquement le nom de la fonction comme cible. Nous définissons ensuite des objets threads, t1, t2 et t3 avec func1, func2 et func3 comme cibles, respectivement.

t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)
t3 = threading.Thread(target=func3)

t1.start()
t2.start()
t3.start()

Voici le code complet de l'exemple de thread :

# /python-sleep/threads.py
import time
import threading

def func1():
    for i in range(5):
        print(f"Running t1, print {i}.")
        time.sleep(2)

def func2():
    for i  in range(5):
         print(f"Running t2, print {i}.")
         time.sleep(1)

def func3():
    for i in range(4):
         print(f"Running t3, print {i}.")
         time.sleep(0.5)

t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)
t3 = threading.Thread(target=func3)

t1.start()
t2.start()
t3.start()

Observez la sortie. L'exécution change entre les trois threads. Le fil t3 a le temps d'attente le plus bas, il est donc suspendu le moins longtemps possible. Fil de discussion t1 a la plus longue durée de veille de deux secondes, c'est donc le dernier thread à terminer l'exécution.

YouTube vidéo

Pour en savoir plus, lisez le tutoriel sur le bases du multithreading en Python.

Conclusion

Dans ce tutoriel, vous avez appris à utiliser Python sleep() fonction pour ajouter des délais au code.

Vous pouvez accéder à la sleep() fonction du module de temps intégré, time.sleep(). Pour retarder l'exécution de n secondes, utilisez time.sleep(n). En outre, vous avez vu des exemples de retardement des itérations suivantes dans une boucle par différentes valeurs, compte à rebours et multithreading.

Vous pouvez maintenant explorer des fonctionnalités plus avancées du module de temps. Vous voulez travailler avec des dates et des heures en Python ? En plus du module d'heure, vous pouvez tirer parti des fonctionnalités des modules datetime et calendrier.

Ensuite, apprenez à calculer le décalage horaire en Python.⏰

Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder