推迟python中的函数
在JavaScript中,我习惯于能够在以后调用要执行的函数,像这样
function foo() {
alert('bar');
}
setTimeout(foo, 1000);
这不会阻止其他代码的执行。
我不知道如何在Python中实现类似的功能。我可以睡
import time
def foo():
print('bar')
time.sleep(1)
foo()
但这会阻止其他代码的执行。(实际上,就我而言,阻塞Python本身并不是问题,但我无法对该方法进行单元测试。)
我知道线程是为异步执行而设计的,但是我想知道是否有更简单,相似setTimeout
或setInterval
存在的东西。
-
from threading import Timer from time import sleep def foo(): print "timer went off!" t = Timer(4, foo) t.start() for i in range(11): print i sleep(.5)
如果您想重复一遍,这是一个简单的解决方案:与其使用
Timer
,而不是使用,Thread
而是将其传递给一个起作用的函数,如下所示:def call_delay(delay, repetitions, func, *args, **kwargs): for i in range(repetitions): sleep(delay) func(*args, *kwargs)
这不会做无限循环,因为如果执行不正确,可能会导致线程死亡并导致其他不愉快的行为。