Comment puis-je faire un retard dans Python?


Answers

Vous pouvez utiliser la fonction sleep () dans le module de temps. Il peut prendre un argument flottant pour la résolution sous-seconde.

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

Je voudrais savoir comment mettre un délai dans un script Python.




Les retards peuvent être mis en œuvre en utilisant trois méthodes.

Commençons par le plus simple:

import time
time.sleep(5) #delay for 5 seconds.

La deuxième méthode à retarder utiliserait la méthode d'attente implicite.

 driver.implicitly_wait(5)

La troisième méthode est plus utile lorsque vous devez attendre qu'une action particulière soit terminée ou jusqu'à ce qu'un élément soit trouvé.

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))



Un peu de plaisir avec un générateur endormi.

La question concerne le délai. Il peut s'agir d'un temps fixe, mais dans certains cas nous pourrions avoir besoin d'un délai mesuré depuis la dernière fois. Voici une solution possible:

Retard mesuré depuis la dernière fois (se réveiller régulièrement)

La situation peut être, nous voulons faire quelque chose aussi régulièrement que possible et nous ne voulons pas déranger avec toutes les last_time , next_time tout autour de notre code.

générateur de buzzer

Le code suivant ( sleepy.py ) définit buzzergen gerenarator

import time
from itertools import count

def buzzergen(period):
    nexttime = time.time() + period
    for i in count():
        now = time.time()
        tosleep = nexttime - now
        if tosleep > 0:
            time.sleep(tosleep)
            nexttime += period
        else:
            nexttime = now + period
        yield i, nexttime

Invocation de buzzergen régulier

from sleepy import buzzergen
import time
buzzer = buzzergen(3) # planning to wake up each 3 seconds
print time.time()
buzzer.next()
print time.time()
time.sleep(2)
buzzer.next()
print time.time()
time.sleep(5) # sleeping a bit longer than usually
buzzer.next()
print time.time()
buzzer.next()
print time.time()

et en cours d'exécution, nous voyons:

1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47

Nous pouvons également l'utiliser directement dans une boucle:

import random
for ring in buzzergen(3):
    print "now", time.time()
    print "ring", ring
    time.sleep(random.choice([0, 2, 4, 6]))

et en cours d'exécution, nous pourrions voir:

now 1400102751.46
ring (0, 1400102754.461676)
now 1400102754.46
ring (1, 1400102757.461676)
now 1400102757.46
ring (2, 1400102760.461676)
now 1400102760.46
ring (3, 1400102763.461676)
now 1400102766.47
ring (4, 1400102769.47115)
now 1400102769.47
ring (5, 1400102772.47115)
now 1400102772.47
ring (6, 1400102775.47115)
now 1400102775.47
ring (7, 1400102778.47115)

Comme nous le voyons, ce buzzer n'est pas trop rigide et nous permet de rattraper régulièrement les intervalles endormis, même si nous dormons trop longtemps et sortons du programme régulier.




Bonne question.

Vous pouvez l'obtenir en faisant simplement ceci:

from time import sleep

# doing stuff
sleep(0.5) # sleeping half a second (sleep() uses seconds, but you can also use floats)
# doing stuff..

J'espère, je pourrais aider.




La bibliothèque tkinter de la bibliothèque standard Python est un outil interactif que vous pouvez importer. Fondamentalement, vous pouvez créer des boutons et des boîtes et des popups et des choses qui apparaissent comme des fenêtres que vous manipulez avec du code.

Si vous utilisez tkinter, N'UTILISEZ PAS TIME.SLEEP() parce que votre programme sera corrompu. Cela m'est arrivé. Au lieu de cela, utilisez root.after() et remplacez les valeurs pour autant de secondes, avec un millisecondes. Par exemple, time.sleep(1) est équivalent à root.after(1000) dans tkinter.

Sinon, time.sleep() , que de nombreuses réponses ont souligné, c'est le chemin à parcourir.