詳解Python定時(shí)器Timer的使用及示例
1.定時(shí)器
Timer定時(shí)器源碼實(shí)現(xiàn),和自定義一個(gè)線程方式一樣,都是繼承Thread類,重寫了run()方法,只是實(shí)現(xiàn)的功能是延時(shí)執(zhí)行一個(gè)函數(shù)或方法。
(1)線程定時(shí)器(Timer)解釋:
- Timer類是Thread的子類,只加入了時(shí)間延遲功能。
- Thread和Timer對(duì)象都用start()方法啟動(dòng)。
- 啟動(dòng)Timer后,等于單獨(dú)啟動(dòng)一個(gè)線程,為非阻塞的。
(2)Timer 的兩種用法:
- 正常用法:?jiǎn)?dòng)后,延時(shí)執(zhí)行函數(shù)或方法。
- 特殊用法:每隔n秒,執(zhí)行一次函數(shù)或方法,就是不斷地啟動(dòng)定時(shí)器。
2.隊(duì)列
- queue.Queue( ):先入先出。
- queue.LifoQueue( ):后入先出。
- queue.PriorityQueue() :可設(shè)置優(yōu)先級(jí)。
- Queue.put():往隊(duì)列放數(shù)據(jù)。
- Qveue .get():從隊(duì)列取數(shù)據(jù)。
- Quewe.task.done():配合get使用,告訴隊(duì)列本次完成。
- Queue.qsize():獲取數(shù)據(jù)的數(shù)量。
- Queue.full()/empty():判滿/空。
- Queue.join():等待線程完成。
3.線程池:
線程池在系統(tǒng)啟動(dòng)時(shí)即創(chuàng)建大量空閑的線程,程序只要將一個(gè)函數(shù)提交給線程池,線程池就會(huì)啟動(dòng)一個(gè)空閑的線程來執(zhí)行它。當(dāng)該函數(shù)執(zhí)行結(jié)束后,該線程并不會(huì)死亡,而是再次返回到線程池中變成空閑狀態(tài),等待執(zhí)行下一個(gè)函數(shù)。
使用線程池可以有效地控制系統(tǒng)中并發(fā)線程的數(shù)量。當(dāng)系統(tǒng)中包含有大量的并發(fā)線程時(shí),會(huì)導(dǎo)致系統(tǒng)性能急劇下降,甚至導(dǎo)致Python解釋器崩潰,而線程池的最大線程數(shù)參數(shù)可以控制系統(tǒng)中并發(fā)線程的數(shù)量不超過此數(shù),從而節(jié)省線程創(chuàng)建和銷毀的開銷,能帶來更好的性能和系統(tǒng)穩(wěn)定性。
4.案例
使用定時(shí)器實(shí)現(xiàn)當(dāng)前時(shí)間每秒循環(huán)輸出一次。
Timer:
import threading import time # run函數(shù) def run(): print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 輸出當(dāng)?shù)貢r(shí)間 timer = threading.Timer(1, run) # 設(shè)置一個(gè)定時(shí)器,循環(huán)輸出時(shí)間 timer.start() # 啟動(dòng)線程 run()
運(yùn)行結(jié)果:
2022-01-22 20:22:15 2022-01-22 20:22:16 2022-01-22 20:22:17 2022-01-22 20:22:18 2022-01-22 20:22:19 2022-01-22 20:22:20 2022-01-22 20:22:21 2022-01-22 20:22:22 2022-01-22 20:22:23 2022-01-22 20:22:24 2022-01-22 20:22:25 ······
到此這篇關(guān)于詳解Python定時(shí)器Timer的使用及示例的文章就介紹到這了,更多相關(guān)Python定時(shí)器Timer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python實(shí)現(xiàn)加強(qiáng)版煙花
這篇文章主要為大家詳細(xì)介紹了如何利用Python制作一個(gè)加強(qiáng)版煙花景,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-02-02使用python 將圖片復(fù)制到系統(tǒng)剪貼中
今天小編就為大家分享一篇使用python 將圖片復(fù)制到系統(tǒng)剪貼中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python程序包的構(gòu)建和發(fā)布過程示例詳解
Python程序包的構(gòu)建和發(fā)布過程,本文通過示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-06-06python四種出行路線規(guī)劃的實(shí)現(xiàn)
路徑規(guī)劃中包括步行、公交、駕車、騎行等不同方式,今天借助高德地圖web服務(wù)api,實(shí)現(xiàn)出行路線規(guī)劃。感興趣的可以了解下2021-06-065行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解
這篇文章主要介紹了5行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Python?Decorator的設(shè)計(jì)模式演繹過程解析
本文主要梳理了Python?decorator的實(shí)現(xiàn)思路,解釋了為什么Python?decorator是現(xiàn)在這個(gè)樣子,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07在Python的列表中利用remove()方法刪除元素的教程
這篇文章主要介紹了在Python的列表中利用remove()方法刪除元素的教程,是Python入門中的基礎(chǔ)知識(shí),注意其和pop()方法的區(qū)別,需要的朋友可以參考下2015-05-05詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法
這篇文章主要介紹了詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12