Python Problem Overview
I want to know how to call a function after a certain time. I have tried time.sleep() but this halts the whole script. I want the script to carry on, but after ???secs call a function and run the other script at the same time
Solution 1 - Python
Have a look at
threading.Timer. It runs your function in a new thread.
from threading import Timer
print "hello, world"
t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
Solution 2 - Python
If you want a function to be called after a while and not to stop your script you are inherently dealing with threaded code. If you want to set a function to be called and not to worry about it, you have to either explicitly use multi-threading - like em Mark Byers's answr, or use a coding framework that has a main loop which takes care of function dispatching for you - like twisted, qt, gtk, pyglet, and so many others. Any of these would require you to rewrite your code so that it works from that framework's main loop.
Solution 3 - Python
If the non-block feature is not needed, just use
time.sleep(5) which will work anywhere and save your life.
Solution 4 - Python
Okey, not a perfect solution but i used the following since my job was simple enough:
counter_time = 0
counter_time = counter_time + 0.1
Now you have time just use
if to do something at spesific time. My code was running inside the
while loop so this worked for me. You can do the same or use threading to run this infinite loop together with your own code.