Arhn - архитектура программирования

Таймер Python Threading не работает при приостановке

Я пытаюсь создать программу, которая синхронизируется с сервером каждые 60 секунд. Код, который я использую для этого, выглядит так:

threading.Timer(60, self.sync, [""]).start()

Довольно просто и отлично работает. Проблема в том, что если я решу приостановить работу машины на некоторое время, а затем вернусь, она больше не будет работать. Как будто таймер перестал работать. Я подозреваю, что это связано с разрывом в реальном времени, воспринимаемым таймером, но я не уверен, как заставить его работать.

Приложение, которое я делаю, ориентировано на OSX, так что, может быть, есть системный таймер, к которому я мог бы получить доступ?



Ответы:


1

Я не знаю, будет ли это работать лучше, но вы можете попробовать:

import time

def call_sync(freq, meth):
    cur_time = time.time()
    while True:
        while (time.time() - cur_time) < freq:
            yield None
        meth()
        cur_time = time.time()


def sync():
    print("synced")

def main():
    timer = call_sync(60, sync)
    while True:
        time.sleep(1)
        next(timer)

if __name__ == '__main__':
    main()
29.05.2014
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..