3218 votes

Comment faire une temporisation en Python ?

Je voudrais savoir comment mettre une temporisation dans un script Python.

3467voto

Evan Fosmark Points 17732
import time
time.sleep(5)   # Delays for 5 seconds. You can also use a float value.

Voici un autre exemple où quelque chose est exécuté environ une fois par minute :

import time
while True:
    print("This prints once a minute.")
    time.sleep(60) # Delay for 1 minute (60 seconds).

44 votes

Si vous avez besoin que certaines conditions se produisent. Il est préférable d'utiliser threading.Event.wait.

24 votes

Eh bien... il s'imprimera moins fréquemment que cela, parce qu'il faut du temps pour imprimer et gérer tous les tampons que cela implique (éventuellement en faisant un changement de contexte du noyau), et pour enregistrer le signal d'alarme, mais... oui. Un peu moins d'une fois par minute.

25 votes

Lorsque vous utilisez tkinter comme interface utilisateur graphique, sleep() ne fera pas l'affaire - utilisez after() à la place : tkinter.Tk.after(yourrootwindow,60000) o yourrootwindow.after(60000)

871voto

pobk Points 1500

Vous pouvez utiliser le sleep() dans le time module . Il peut prendre un argument flottant pour une résolution inférieure à la seconde.

from time import sleep
sleep(0.1) # Time in seconds

3 votes

Qu'en est-il de la résolution temporelle ? Par exemple, y a-t-il un risque qu'il s'agisse d'un multiple de 16,66 ms (bien que dans l'exemple, il s'agisse exactement de 0,1 seconde, soit 6 multiples de 16,66 ms) ? Ou est-ce que, par exemple, un délai d'au moins 1 ms est garanti ? Par exemple, un délai spécifié de 3 ms pourrait-il se traduire par un délai de 17 ms ?

135voto

tehvan Points 3949

Veuillez lire http://www.faqts.com/knowledge_base/view.phtml/aid/2609/fid/378 qui peut vous aider davantage :

Essayez la fonction de mise en veille du module temporel.

import time
time.sleep(60)

Et mettez cela dans une boucle while et une déclaration sera exécutée seulement sur le minute... Cela vous permet d'exécuter une instruction à des intervalles prédéfinis indépendamment de la durée de la commande (tant qu'elle prend moins de une minute ou 5 ou 60 ou tout ce que vous avez défini). lancer un ping une fois par minute. Si je me contente de time.sleep(60) ou time.sleep(45) même, le ping ne prendra pas toujours le même temps. Voici le code :)

time.sleep(time.localtime(time.time())[5])

Le [5] extrait simplement les secondes de la valeur de retour de time.localtime(). de time.localtime().

L'avantage de time.sleep est qu'il supporte les nombres à virgule flottante. flottants !

import time
time.sleep(0.1)

http://python.org/doc/current/lib/module-time.html

103voto

rZero3 Points 72

Il existe un module python intégré qui s'appelle "time".

Utilisez-le comme ça :

import time
time.sleep(5)

54voto

Firetryer Points 966

Ce dont vous avez besoin est

time.sleep(sec)

où sec est le nombre de secondes de retard que vous ajoutez.

vous devez également

import time

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X