2017-04-11 84 views
0

Python中是否可以使用线程创建/设置定时器,但是在调用thread.start()之前不能运行该函数?我设置一个永久的计时器,像这样:在不运行函数的情况下创建Python Timer

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()) 

届时运行的程序,我得到一个打印出“富”,其次是“初始化” ......不是我想要的....我只是想它打印“初始化”

回答

0

当写

tmr = perpetualTimer(5,foo()) 

你说“叫perpetualTimer上5和foo的调用结果“。这就是“foo”在“init”之前打印的原因。

看你的代码,它似乎对我来说,你是宁愿找

tmr = perpetualTimer(5,foo) 

只传递给函数的参考!

+0

是的,我意识到,不久后发布的问题。菜鸟错误... – chadianscot

0

发现问题:调用perpetualTimer(5,FOO())实际上应该是

tmr = perpetualTimer(5,foo) 
相关问题