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()

def foo():
    print "I'm bored to death..."

print "creating event and thread"
ev = threading.Event()
t1 = threading.Thread(target=repeat, args=(ev, 1.0, foo))
print "starting thread"
t1.start()
print "waiting for 10 seconds in main thread"
time.sleep(10)
print "setting event"
ev.set()
print "waiting for thread to finish"
t1.join()
print "quit"

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to