Главная » 2018 » Октябрь » 01 » Повторяющийся таймер для Python 3
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!

Всего хорошего!

Просмотров: 432 | Добавил: Домовой | Теги: Python, таймер, класс, Код | Рейтинг: 0.0/0
Всего комментариев: 0
avatar