04:02 Повторяющийся таймер для Python 3 |
Иногда на Питоне надо написать код, который будет вызываться периодически с определённой частотой. К сожалению, стандартная библиотека не содержит решения для подобной проблемы. Поэтому был разыскан такой класс за авторством пользователя MestreLion, который решает, данную проблему. Источник: https://stackoverflow.com/a/13151104 Непосредственно класс: from threading import Timer class RepeatedTimer(object): def __init__(self, interval, function, *args, **kwargs): self._timer = None self.function = function self.interval = interval self.args = args self.kwargs = kwargs self.is_running = False self.start() def _run(self): self.is_running = False self.start() self.function(*self.args, **self.kwargs) def start(self): if not self.is_running: self._timer = Timer(self.interval, self._run) self._timer.start() self.is_running = True def stop(self): self._timer.cancel() self.is_running = False Этот класс реализует повторяющийся таймер, который можно запустить или остановить в любое время, свободно поменять время срабатывания, а также он в состоянии вызывать любые функции с любым количеством параметров from time import sleep def hello(name): print "Hello %s!" % name print "starting..." rt = RepeatedTimer(1, hello, "World") # it auto-starts, no need of rt.start() try: sleep(5) # your long-running job goes here... finally: rt.stop() # better in a try/finally block to make sure the program ends! Всего хорошего! |
|
Всего комментариев: 0 | |