在Python中是否可以使用线程创建/设置定时器,但是在调用thread.start()之前不能运行该函数?我已经设置了永久定时器,如下所示:
class perpetualTimer():
enabled = False
Interval = 0
def __init__(self,t,hFunction):
print("init")
self.t=t
self.Interval = t
self.hFunction = hFunction
self.thread = Timer(self.t,self.handle_function)
def handle_function(self):
print("handle")
print(self.hFunction.__name__)
self.hFunction()
self.thread = Timer(self.t,self.handle_function)
self.thread.start()
def start(self):
print("start")
self.thread = Timer(self.Interval,self.handle_function)
self.thread.start()
def stop(self):
print("stop")
self.thread.cancel()
def foo():
print("foo")
然后创建它:
tmr = perpetualTimer(5,foo())
然后运行程序,我得到一个打印出“foo”,然后是“init”...不是我想要的......我只是想要它打印“init”
答案 0 :(得分:0)
写作时
tmr = perpetualTimer(5,foo())
你说“在5上调用perpetualTimer以及调用foo的结果”。这就是为什么在“init”之前打印“foo”的原因。
看着你的代码,在我看来,你正在寻找
tmr = perpetualTimer(5,foo)
仅传递对函数的引用!
答案 1 :(得分:0)
发现问题:对perpetualTimer(5,foo())的调用实际应该是
tmr = perpetualTimer(5,foo)