Ищем простой способ получения оставшегося и прошедшего времени с таймера python. В настоящее время есть (на основе источника github для threading.Timer и предыдущего сообщения):
import threading
import time
class CountdownTimer(threading.Thread):
def __init__(self, interval, function, args=None, kwargs=None):
threading.Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args if args is not None else []
self.kwargs = kwargs if kwargs is not None else {}
self.finished = Event()
self.started_at = None
def cancel(self):
self.finished.set()
def elapsed(self):
return time.time() - self.started_at
def remaining(self):
return self.interval - self.elapsed()
def run(self):
self.started_at = time.time()
self.finished.wait(self.interval)
if not self.finished.is_set():
self.function(*self.args, **self.kwargs)
self.finished.set()
Выглядит ли это достаточно эффективно (не требуется точность, превышающая ту, что в настоящее время обеспечивает threading.Timer)?