On May 7, 10:42 pm, Nick Vatamaniuc <[EMAIL PROTECTED]> wrote:
> On May 7, 10:07 pm, johnny <[EMAIL PROTECTED]> wrote:
>
> > Is there a way to call a function on a specified interval(seconds,
> > milliseconds) every time, like polling user defined method?
>
> > Thanks.
>
> Sure,
>
> >>> def baz():
>
>    ...:     print "Baz!"
>    ...:
>
> >>> from threading import Timer
> >>> timer=Timer(5.0,baz)
> >>> timer.start()
> >>> Baz!
>
> Cheers,
> -Nick Vatamaniuc

By the way, here is another way to do it. This way it will repeat, the
other one executed once. Of course, if it executed once, you can make
it do it again, but there is some trickery involved. Here is a way to
do it using threads.

Hope it helps,
-Nick Vatamaniuc

from threading import Thread
from time import sleep

class Repeater(Thread):
    def __init__(self,interval,fun,*args,**kw):
        Thread.__init__(self)
        self.interval=interval
        self.fun=fun
        self.args=args
        self.kw=kw
        self.keep_going=True

    def run(self):
       while(self.keep_going):
            sleep(self.interval)
            self.fun(*self.args,**self.kw)

    def stop_repeating(self):
         self.keep_going=False

def eat(*a):
    print "eating: " , ','.join([stuff for stuff in a])

r=Repeater(1.0, eat, 'eggs','spam','kelp')
r.start()
sleep(6.0)
r.stop_repeating()

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

Reply via email to