Python: intervalli a x: 00 repeat
Domanda
Come faccio a sched un timer di ripetizione per 5 minuti intervalli. Che il fuoco a 00 secondi, poi ripetere a 00. Ok, non è difficile in tempo reale, ma il più vicino possibile con SYS ritardi. Cercando di evitare un accumulo di ritardi e avvicinarsi 00.
Lang: Python, OS: WinXP x64
Sistema ha una risoluzione 25ms.
Qualsiasi codice sarebbe utile, tia
Soluzione
Non so come si fa più preciso rispetto con filettatura .Timer . E ' "una tantum", ma che semplicemente significa che la funzione di pianificare in questo modo deve immediatamente ri-programmare stesso per altri 300 secondi più tardi, prima cosa. (È possibile aggiungere la precisione misurando il tempo esatto con time.time
ogni volta e variando il successivo ritardo di programmazione di conseguenza).
Altri suggerimenti
Provare e confrontare le stampe di tempo di questi due esempi di codice:
Codice di esempio 1
import time
delay = 5
while True:
now = time.time()
print time.strftime("%H:%M:%S", time.localtime(now))
# As you will observe, this will take about 2 seconds,
# making the loop iterate every 5 + 2 seconds or so.
## repeat 5000 times
for i in range(5000):
sum(range(10000))
# This will sleep for 5 more seconds
time.sleep(delay)
Codice di esempio 2
import time
delay = 5
while True:
now = time.time()
print time.strftime("%H:%M:%S", time.localtime(now))
# As you will observe, this will take about 2 seconds,
# but the loop will iterate every 5 seconds because code
# execution time was accounted for.
## repeat 5000 times
for i in range(5000):
sum(range(10000))
# This will sleep for as long as it takes to get to the
# next 5-second mark
time.sleep(delay - (time.time() - now))