詳解Python的多線程定時(shí)器threading.Timer
threading.Timer
一次timer只生效一次,不會(huì)反復(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)前的時(shí)間,即一個(gè)2秒的定時(shí)器。運(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ù),可以在定時(shí)器被觸發(fā)前,取消這個(gè)Timer。
允許多個(gè)定時(shí)任務(wù),并發(fā)執(zhí)行,互不干擾。
如果想更精確地控制定時(shí)器函數(shù)的觸發(fā)時(shí)間,就需要把下一次定時(shí)器觸發(fā)的代碼,放在定時(shí)器執(zhí)行代碼最開(kāi)始的地方,如下:
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()
定時(shí)器repeat要執(zhí)行至少3秒,但是2秒后,下一個(gè)定時(shí)器就會(huì)被觸發(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
從打印信息來(lái)分析,同時(shí)存在多個(gè)repeat函數(shù)的執(zhí)行序列是沒(méi)問(wèn)題的,這種情況下,還需要認(rèn)真考慮定時(shí)器函數(shù)的可重入問(wèn)題!
以上就是對(duì)threading.Timer使用的介紹,請(qǐng)注意兩種設(shè)置定時(shí)器循環(huán)計(jì)時(shí)開(kāi)始的方法,以及他們的區(qū)別。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)
在不同行業(yè)中,我們經(jīng)常會(huì)遇到一個(gè)麻煩的問(wèn)題:數(shù)據(jù)清洗,尤其是當(dāng)我們需要處理客戶編碼異常數(shù)據(jù)時(shí),下面小編就來(lái)和大家分享一下常用的解決辦法吧2023-07-07
pandas按若干個(gè)列的組合條件篩選數(shù)據(jù)的方法
下面小編就為大家分享一篇pandas按若干個(gè)列的組合條件篩選數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python命令行交互引導(dǎo)用戶選擇寵物實(shí)現(xiàn)
這篇文章主要為大家介紹了python命令行交互引導(dǎo)用戶選擇寵物實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Python 中如何實(shí)現(xiàn)參數(shù)化測(cè)試的方法示例
這篇文章主要介紹了Python 中如何實(shí)現(xiàn)參數(shù)化測(cè)試的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

