Time delay function?
Ken
ken at hotmail.com
Sun Oct 20 12:23:51 EDT 2002
More information about the Python-list mailing list
Sun Oct 20 12:23:51 EDT 2002
- Previous message (by thread): Time delay function?
- Next message (by thread): Time delay function?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Alan Kennedy" <alanmk at hotmail.com> wrote in message news:3DB293B4.AB2737DB at hotmail.com... > 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"? Hi, the purpose I think I will use is to wait for a output file to be present at the system in order to read it.....because I will not know how long the backend program takes to produce the result. I only consider this method if the other suggested outf, inf = os.popen2("cat") method fails...... As for the below section...... thanks very much for the reference. I will surely have a look at it to see if it fits my aim. Thanks : -) > 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