Python запускает функцию каждые 5 секунд, используя информацию из предыдущей попытки

Я хочу запускать функцию каждые 5 секунд.
Этот код будет работать:

import threading
def notify():
    threading.Timer(5.0, notify).start()

notify()

Что делать, если функции нужен параметр из предыдущего запуска ?
Я пробовал это:

import threading
def notify(since):
    threading.Timer(5.0, notify(since)).start()
# initial_id is just an integer, eg 423455677
notify(initial_id)

Я получаю ошибку:

Traceback (most recent call last):
File "/Users/paulyu/anaconda/lib/python3.4/threading.py", line 911, in _bootstrap_inner
self.run()
File "/Users/paulyu/anaconda/lib/python3.4/threading.py", line 1177, in run
self.function(*self.args, **self.kwargs)
TypeError: notify() missing 1 required positional argument: 'since'

Как это исправить ?
Ваш совет очень ценится.
Спасибо
Пол

1 ответ

  1. Когда вам нужно вспомнить какое-то состояние, вы обычно хотите класс.

    import threading
    
    class Notifier:
    
        def __init__(self, since):
            self.since = since
    
        def notify(self):
            print(self.since)
            self.since += 1
            threading.Timer(2.0, self.notify).start()
    
    Notifier(123).notify()