Continuous Timer
Robert Dailey
rcdailey at gmail.com
Tue Jun 3 18:32:07 EDT 2008
I just need a repeating timer, I could care less about microsecond
accuracies.
On Tue, Jun 3, 2008 at 11:19 AM, John Nagle <nagle at animats.com> wrote:
> Gabriel Genellina wrote:
>
>> En Fri, 30 May 2008 22:50:13 -0300, Robert Dailey <rcdailey at gmail.com>
>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20080603/f50625a3/attachment-0001.html>
More information about the Python-list
mailing list