Question

Comment puis-je sched une minuterie de répétition pendant 5 minutes d'intervalle. Ce qui le feu à 00 secondes, puis répétez à 00. Ok, pas difficile à temps réel, mais aussi près que possible avec un certain décalage sys. Essayer d'éviter une accumulation de retards et d'obtenir près de 00.

Lang: Python, OS: Windows XP x64

Système a une résolution de 25ms.

Tout code serait utile, tia

Était-ce utile?

La solution

Je ne sais pas comment faire plus avec précision qu'avec filetage .Timer . Il est « one-shot », mais cela signifie simplement la fonction que vous planifiez de cette façon doit immédiatement se replanifie pendant 300 secondes plus tard, la première chose. (Vous pouvez ajouter une précision en mesurant l'heure exacte avec time.time chaque fois et en faisant varier le retard suivant la programmation en conséquence).

Autres conseils

Essayez de comparer les impressions de temps de ces deux exemples de code:

Exemple de code 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)

Exemple de code 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))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top