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

On Tue, Jun 3, 2008 at 11:19 AM, John Nagle <[EMAIL PROTECTED]> wrote:

> Gabriel Genellina wrote:
>
>> En Fri, 30 May 2008 22:50:13 -0300, Robert Dailey <[EMAIL PROTECTED]>
>> 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
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to