計時器對象用於特定時間運行的操做。每每被安排到特定的單獨的線程上運行,函數
可是計時器初始化的時間間隔可能不是解釋器實際執行操做時的實際時刻,ui
由於線程調度程序負責實際調度與計時器對象相對應的線程。spa
Timer是Thread類的子類。顯式調用與計時器對應的start()函數來啓動。線程
建立一個定時器語法code
threading.Timer(interval,function,args = None,kwargs = None) 對象
通過時間多少秒,後運行程序。若是args爲None(默認值),則將使用空列表。若是kwargs爲None(默認值),則將使用空的dict。blog
import threading def fun(): print("hello\n") timer = threading.Timer(1.0, fun) timer.start() print("quit\n")
程序start()運行5秒中後調用fun(),it
timer.cancel() 中止計時器,取消執行計時器的操做。這僅在定時器仍處於等待階段時纔有效。io
import threading def fun(): print("hello\n") timer = threading.Timer(1.0, fun) timer.start() print("Cancelling timer\n") timer.cancel() print("Exit\n")
使用threading.Timer實現線程循環任務定時器function
import threading def func1(a): print('TO DO 。。。') a+=1 print(a) print('當前激活線程數爲',threading.activeCount()) if a>5: return timer = threading.Timer(1, func1,(a,)) #1秒後調func1 不會形成線程堆積 timer.start() timer = threading.Timer(5, func1,(0,)) #5秒後調用func1 timer.start()
運行結果