Have a look at threading.Timer. It runs your function in a new thread without using sleep().
from threading import Timer
def hello():
print "hello, world"
t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
The second method to delay would be using the...