Continuous Timer

Robert Dailey rcdailey at
Wed Jun 4 00:32:07 CEST 2008

I just need a repeating timer, I could care less about microsecond

On Tue, Jun 3, 2008 at 11:19 AM, John Nagle <nagle at> wrote:

> Gabriel Genellina wrote:
>> En Fri, 30 May 2008 22:50:13 -0300, Robert Dailey <rcdailey at>
>> escribió:
>>  Reading through the Python 2.5 docs, I'm seeing a Timer class in the
>>> threading module, however I cannot find a timer object that will
>>> continuously call a function of my choice every XXXX amount of
>>> milliseconds.
>>> For example, every 1000 milliseconds I want a function named Foo to be
>>> called. This would continue to happen until I terminate the timer in my
>>> main
>>> thread. Thanks for the help.
>> Use an Event object; its wait() will provide the sleep time, and when it
>> is set() the thread knows it has to exit.
>> import threading
>> import time
>> def repeat(event, every, action):
>>    while True:
>>        event.wait(every)
>>        if event.isSet():
>>            break
>>        action()
>    Actually, to do this right, it's necessary to account for the time used
> by
> "action".  The code above will run no sooner than the time "every" after
> the COMPLETION of action.
>    I've done this sort of thing under QNX, the real-time operating system,
> which has better timing primitives, and seen the action executed within
> a few microseconds of the correct time, every time.  But that was in C++.
>    If you're trying to do hard real time in Python on Linux or Windows,
> don't expect reliable timing.  Remember, Python isn't really preemptive,
> because of the global interpreter lock and the lack of thread priorities.
>                                        John Nagle
> --
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Python-list mailing list