How to run a repeating timer every n minutes?

mk mrkafk at gmail.com
Thu Oct 29 12:03:00 EDT 2009


Frank Millman wrote:

> class Timer(threading.Thread):
>     def __init__(self):
>         threading.Thread.__init__(self)
>         self.event = threading.Event()
> 
>     def run(self):
>         while not self.event.is_set():
>              """ The things I want to do go here. """
>              self.event.wait(number_of_seconds_to_wait)
> 
>     def stop(self):
>         self.event.set()
> 
> In your main program -
>   - to start the timer
>       tmr = Timer()
>       tmr.start()
> 
>   - to stop the timer
>       tmr.stop()
> 
> It is easy to extend this by passing the number_of_seconds_to_wait, or a 
> function name to be executed, as arguments to the Timer.

I'm newbie at threading, so I'm actually asking: should not method like 
stop() be surrounded with acquire() and release() of some threading.lock?

I mean, is this safe to update running thread's data from the main 
thread without lock?

Regards,
mk





More information about the Python-list mailing list