2010-08-24 5 views
1

Comment programmer une temporisation de répétition pour des intervalles de 5 minutes. Quel feu à 00 secondes, puis répétez à 00. Ok, pas dur en temps réel, mais aussi proche que possible avec des retards sys. Essayer d'éviter une accumulation de retards et d'obtenir près de 00.Avec python: intervalles à x: 00 répétez

Lang: Python, OS: Windows XP x64

système a 25ms résolution.

Tout code serait utile, tia

Répondre

2

Je ne sais pas comment faire plus avec précision qu'avec threading.Timer. C'est "one-shot", mais cela signifie simplement que la fonction que vous planifiez de cette façon doit se re-programmer immédiatement 300 secondes plus tard, d'abord. (Vous pouvez ajouter de la précision en mesurant l'heure exacte avec time.time à chaque fois et en modifiant le prochain délai de planification en conséquence).

0

essayer et 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)) 
+0

le bulid de retard de retard après chaque incendie . comment corriger? – Merlin

+0

Avez-vous exécuté le code? J'ai modifié mes exemples de code pour que vous puissiez voir les impressions de temps. J'ai utilisé un délai de 5 secondes pour le rendre plus facile à démontrer. – Kit

+0

Essayer, TIA Comment je le tue? Comment démarrer à 00: 05: 00.0000? Comment vérifier avec des microsecondes. c'est ainsi que je peux voir "ci-dessous une seconde", – Merlin

Questions connexes