Pregunta

¿Cómo sched un temporizador de repetición para intervalos de 5 minutos. ¿Qué fuego en 00 segundos, y luego repetir en el 00. Está bien, no es difícil en tiempo real, pero tan cerca como sea posible con sys retardos. Tratando de evitar la acumulación de rezagos y obtener cerca de 00.

Lang: Python, SO: WinXP x64

El sistema tiene una resolución de 25 ms.

Cualquier código sería de gran ayuda, tia

¿Fue útil?

Solución

No sé cómo hacerlo más precisión que con roscado .Timer. Se trata de "una sola vez", pero eso sólo significa que la función se programa de esa manera debe volver a programar inmediatamente sí por otros 300 segundos más tarde, a primera hora. (Se puede añadir una precisión al medir el tiempo exacto con time.time cada vez y variando el próximo retardo de programación en consecuencia).

Otros consejos

Trate de comparar las impresiones de tiempo de estos dos ejemplos de código:

Código de ejemplo 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)

Código de ejemplo 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))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top