詳解Python的多線程定時器threading.Timer
threading.Timer
一次timer只生效一次,不會反復(fù)循環(huán),如果實(shí)現(xiàn)循環(huán)觸發(fā),代碼如下:
import time
import threading
def createTimer():
t = threading.Timer(2, repeat)
t.start()
def repeat():
print('Now:', time.strftime('%H:%M:%S',time.localtime()))
createTimer()
createTimer()
這段代碼的功能就是每2秒打印出當(dāng)前的時間,即一個2秒的定時器。運(yùn)行效果如下:
E:\py>python timer.py
Now: 16:36:15
Now: 16:36:17
Now: 16:36:19
Now: 16:36:21
Now: 16:36:23
Now: 16:36:25
Now: 16:36:27
cancel函數(shù),可以在定時器被觸發(fā)前,取消這個Timer。
允許多個定時任務(wù),并發(fā)執(zhí)行,互不干擾。
如果想更精確地控制定時器函數(shù)的觸發(fā)時間,就需要把下一次定時器觸發(fā)的代碼,放在定時器執(zhí)行代碼最開始的地方,如下:
import time
import threading
def createTimer():
t = threading.Timer(2, repeat)
t.start()
def repeat():
createTimer()
print('Now-1:', time.strftime('%H:%M:%S',time.localtime()))
time.sleep(3)
print('Now-2:', time.strftime('%H:%M:%S',time.localtime()))
createTimer()
定時器repeat要執(zhí)行至少3秒,但是2秒后,下一個定時器就會被觸發(fā),這是允許的!上面這段代碼的執(zhí)行效果如下:
E:\py>python timer.py
Now-1: 16:46:12
Now-1: 16:46:14
Now-2: 16:46:15
Now-1: 16:46:16
Now-2: 16:46:17
Now-1: 16:46:18
Now-2: 16:46:19
Now-1: 16:46:20
Now-2: 16:46:21
Now-1: 16:46:22
Now-2: 16:46:23
從打印信息來分析,同時存在多個repeat函數(shù)的執(zhí)行序列是沒問題的,這種情況下,還需要認(rèn)真考慮定時器函數(shù)的可重入問題!
以上就是對threading.Timer使用的介紹,請注意兩種設(shè)置定時器循環(huán)計(jì)時開始的方法,以及他們的區(qū)別。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
在python中l(wèi)ogger setlevel沒有生效的解決
今天小編就為大家分享一篇在python中l(wèi)ogger setlevel沒有生效的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
使用wxPython實(shí)現(xiàn)Windows11任務(wù)欄通知功能
這篇文章主要為大家詳細(xì)介紹了如何使用 wxPython 模塊,在 Windows 11 中實(shí)現(xiàn)任務(wù)欄通知功能,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
python實(shí)現(xiàn)下載指定網(wǎng)址所有圖片的方法
這篇文章主要介紹了python實(shí)現(xiàn)下載指定網(wǎng)址所有圖片的方法,涉及Python針對頁面的讀取、遍歷及文件操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
Python+SimpleRNN實(shí)現(xiàn)股票預(yù)測詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python和SimpleRNN實(shí)現(xiàn)股票預(yù)測效果,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定幫助,需要的可以參考一下2022-05-05

