2017-04-11 80 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) 
相關問題