Python时间延迟

时间:2010-08-08 08:09:33

标签: python time

我想知道如何在一段时间后调用一个函数。我试过time.sleep()但这会暂停整个脚本。我想让脚本继续进行,但是在???s之后调用一个函数并同时运行另一个脚本

4 个答案:

答案 0 :(得分:57)

看看threading.Timer。它在一个新线程中运行你的函数。

from threading import Timer

def hello():
    print "hello, world"

t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed

答案 1 :(得分:3)

如果您想在一段时间后调用函数而不是停止脚本,那么您本身就是在处理线程代码。如果你想设置一个被调用的函数而不用担心它,你必须明确地使用多线程 - 比如Mark Byers的回答,或者使用一个带有主循环的编码框架,它负责函数调度。你 - 像twisted,qt,gtk,pyglet等等。其中任何一个都需要您重写代码,以便它可以从该框架的主循环中运行。

要么就是这样,要么在事件检查中自己编写一些主循环代码 - 总而言之,如果你想要的唯一东西就是单个函数调用,那么threading.Timer就是这样做的。如果你想使用这些定时调用来实际循环程序,就像通​​常使用javascript的setTimeout一样,你最好选择我上面列出的一个编码框架并重构你的代码以利用它。

答案 2 :(得分:0)

只需使用 time.sleep(5),它可以在任何地方工作并挽救您的生命。

答案 3 :(得分:-4)

import threading

def time_demo():
  threading.Timer(5.0, time_demo()).start()

print 'Hello this is time demo function'
time_demo()