Python时间延迟
我想知道怎么在过了一段时间后调用一个函数。我试过使用 time.sleep()
,但是这样会让整个脚本停下来。我希望脚本可以继续运行,但在过了???秒后调用一个函数,同时还能运行其他的脚本。
5 个回答
2
如果你不需要非阻塞的功能,那就直接用 time.sleep(5)
吧,这个在任何地方都能用,而且能让你省心不少。
5
如果你想让一个函数在一段时间后被调用,并且不想让你的脚本停止运行,那你就得用到线程代码。简单来说,就是你需要让程序在后台继续运行,而不是一停下来就等着这个函数完成。要实现这个,你可以选择明确使用多线程,比如Mark Byers的回答中提到的那样,或者使用一些编程框架,这些框架有一个主循环,可以帮你处理函数的调用,比如twisted、qt、gtk、pyglet等等。这些框架都需要你重新编写代码,让它们能在框架的主循环中运行。
另外一种选择就是自己在代码中写一个主循环来检查事件。总的来说,如果你只想调用单个函数,使用threading.Timer是个不错的选择。如果你想用这些定时调用来循环程序,就像在JavaScript中使用setTimeout那样,最好选择我上面提到的某个编程框架,并对你的代码进行调整,以便利用这些框架的功能。
116
看看这个 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