huesoporro/src/markovbot_gui/libs/timer.py

32 lines
772 B
Python

import logging
import threading
from collections.abc import Callable
logger = logging.getLogger(__name__)
class LoopingTimer(threading.Thread):
"""
Thread that will continuously run `target(*args, **kwargs)`
every `interval` seconds, until program termination.
"""
def __init__(
self,
interval: int,
target: Callable[[], None],
*args,
**kwargs,
) -> None:
threading.Thread.__init__(self)
self.interval = interval
self.target = target
self.args = args
self.kwargs = kwargs
self.stopped = threading.Event()
self.daemon = True
def run(self):
while not self.stopped.wait(self.interval):
self.target(*self.args, **self.kwargs)