Time delay function?
Alan Kennedy
alanmk at hotmail.com
Sun Oct 20 07:29:56 EDT 2002
More information about the Python-list mailing list
Sun Oct 20 07:29:56 EDT 2002
- Previous message (by thread): Time delay function?
- Next message (by thread): Time delay function?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Ken wrote: > Hi, is there a command in Python similar to javascript's > window.settimeout(), where you can set a few seconds delay before > executing a function? Ken, Javascript allows you to execute stuff "in the foreground" while your timer counts away "in the background". I presume you want to be executing other stuff in the interim, i.e. do you want the timeout stuff to happen in the "background"? If yes, there are a couple of different ways you could approach this. 1. If you're working on unix, then you can use the "alarm" method in the "signal" module. This will set an alarm to go off after a particular time. You also use the signal method in the same module to ensure that a particular function is executed when the alarm signal is raised. But this doesn't work on Windows. See an example at http://www.python.org/doc/2.0/lib/Signal_Example.html 2. If you want a cross platform solution, then you should use multithreading. You create a second thread of execution, make it wait for the desired period of time, then execute your function. Fortunately, this is such a common case that there is a convenience class provided in the standard library (from python 2.2 onwards) that achieves exactly this, without requiring too much getting your hands dirty in threading (if you're not comfortable with that kind of thing). The class is called "Timer", and is documented, with an example, here http://www.python.org/doc/2.2/lib/timer-objects.html If you cannot use python 2.2, here is some sample code that achieves the same thing in older versions of python import threading import time class myTimer(threading.Thread): def __init__(self, timeout, func): threading.Thread.__init__(self) self.timeout = timeout self.func = func def run(self): time.sleep(self.timeout) self.func() # Now test it def sayHello(): print "Rip van Winkle awakes!" timer = myTimer(10, sayHello) timer.start() # Count to 11 seconds for sec in range(15): print "waiting...... %d" % sec time.sleep(1) regards, alan kennedy ----------------------------------------------------- check http headers here: http://xhaus.com/headers email alan: http://xhaus.com/mailto/alan
- Previous message (by thread): Time delay function?
- Next message (by thread): Time delay function?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list