Вопрос

Как собирать повторный таймер на 5 минут. Какой огонь в 00 секунд, потом повторяю в 00. ОК, не сложно в режиме реального времени, а как можно ближе к Sys LaG. Пытаясь избежать наращивания в лагах и приближаться к 00.

Lang: Python, OS: WinXP X64

Система имеет разрешение на 25 мм.

Любой код будет полезен, TIA

Это было полезно?

Решение

Я не знаю, как это сделать уже точно, чем с Threading.timer.. Отказ Это «One-Shot», но это просто означает, что функция, которую вы планируете, что необходимо немедленно повторно записать в течение еще 300 секунд спустя, сначала. (Вы можете добавить точность, измеряя точное время с time.time каждый раз и изменение следующей задержки планирования соответственно).

Другие советы

Попробуйте и сравнить временные распечатки этих двух образцов кода:

Код образец 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)

Код образец 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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top