Come posso creare un ritardo temporale in Python?


Answers

È possibile utilizzare la funzione sleep () nel modulo temporale. Può richiedere un argomento float per la risoluzione del secondo secondo.

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

Mi piacerebbe sapere come mettere un ritardo di tempo in uno script Python.




I ritardi possono essere implementati utilizzando tre metodi.

Iniziamo con quello più semplice:

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

Il secondo metodo per ritardare sarebbe utilizzare il metodo di attesa implicito.

 driver.implicitly_wait(5)

Il terzo metodo è più utile quando devi attendere fino al completamento di una determinata azione o fino a quando non viene trovato un elemento.

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



Un po 'di divertimento con il generatore assonnato.

La domanda riguarda il ritardo temporale. Può essere fissato il tempo, ma in alcuni casi potremmo aver bisogno di un ritardo misurato dall'ultima volta. Ecco una possibile soluzione:

Ritardo misurato dall'ultima volta (svegliarsi regolarmente)

La situazione può essere, vogliamo fare qualcosa con la maggiore regolarità possibile e non vogliamo preoccuparci di tutte le cose last_time , next_time attorno al nostro codice.

generatore di cicalini

Il seguente codice ( sleepy.py ) definisce 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

Invocazione di buzzergen regolari

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()

e eseguendolo vediamo:

1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47

Possiamo anche usarlo direttamente in un ciclo:

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

e eseguendolo potremmo vedere:

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)

Come si vede, questo cicalino non è troppo rigido e ci consente di raggiungere intervalli regolari assonnati anche se dormiamo troppo ed evitiamo il normale orario.




La libreria tkinter nella libreria standard Python è uno strumento interattivo che puoi importare. Fondamentalmente, puoi creare pulsanti, finestre e popup e cose che appaiono come finestre che puoi manipolare con il codice.

Se usi tkinter, NON UTILIZZARE TIME.SLEEP() perché TIME.SLEEP() il tuo programma. Questo è successo a me. Invece, utilizzare root.after() e sostituire i valori per molti secondi, con un millisecondo. Ad esempio, time.sleep(1) è equivalente a root.after(1000) in tkinter.

Altrimenti, time.sleep() , che molte risposte hanno indicato, che è la strada da percorrere.




Buona domanda.

Puoi ottenerlo semplicemente facendo questo:

from time import sleep

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

Spero, potrei aiutare.