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