Waht do you think about my repeated_timer class
Barry
barry at barrys-emacs.org
Wed Feb 2 17:31:52 EST 2022
> On 2 Feb 2022, at 21:12, Marco Sulla <Marco.Sulla.Python at gmail.com> wrote:
>
> You could add a __del__ that calls stop :)
Didn’t python3 make this non deterministic when del is called?
I thought the recommendation is to not rely on __del__ in python3 code.
Barry
>
>> On Wed, 2 Feb 2022 at 21:23, Cecil Westerhof via Python-list
>> <python-list at python.org> wrote:
>>
>> I need (sometimes) to repeatedly execute a function. For this I wrote
>> the below class. What do you think about it?
>> from threading import Timer
>>
>>
>>
>> class repeated_timer(object):
>> def __init__(self, fn, interval, start = False):
>> if not callable(fn):
>> raise TypeError('{} is not a function'.format(fn))
>> self._fn = fn
>> self._check_interval(interval)
>> self._interval = interval
>> self._timer = None
>> self._is_running = False
>> if start:
>> self.start()
>>
>> def _check_interval(self, interval):
>> if not type(interval) in [int, float]:
>> raise TypeError('{} is not numeric'.format(interval))
>> if interval <= 0:
>> raise ValueError('{} is not greater as 0'.format(interval))
>>
>> def _next(self):
>> self._timer = Timer(self._interval, self._run)
>> self._timer.start()
>>
>> def _run(self):
>> self._next()
>> self._fn()
>>
>> def set_interval(self, interval):
>> self._check_interval(interval)
>> self._interval = interval
>>
>> def start(self):
>> if not self._is_running:
>> self._next()
>> self._is_running = True
>>
>> def stop(self):
>> if self._is_running:
>> self._timer.cancel()
>> self._timer = None
>> self._is_running = False
>>
>> --
>> Cecil Westerhof
>> Senior Software Engineer
>> LinkedIn: http://www.linkedin.com/in/cecilwesterhof
>> --
>> https://mail.python.org/mailman/listinfo/python-list
> --
> https://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list