С питоном: интервалы в х: 00 повторяются - PullRequest
1 голос
/ 24 августа 2010

Как настроить таймер повторения на 5-минутные интервалы.Который стреляет в 00 секунд, затем повторяется в 00. Хорошо, не трудно в режиме реального времени, но как можно ближе к системным лагамПопытка избежать накопления лагов и приблизиться к 00.

Lang: Python, ОС: WinXP x64

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

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

Ответы [ 2 ]

2 голосов
/ 24 августа 2010

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

0 голосов
/ 24 августа 2010

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

Пример кода 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))
...