Python中time.sleep(0.001)是否真的只等待1毫秒
time.sleep(0.001)真的只等待1毫秒?
在windows上,進(jìn)行簡單的編程驗證上述問題。
import time while True: st = time.time() time.sleep(0.001) et = time.time() print('dt={dt}'.format(dt=et - st))
返回結(jié)果
dt=0.001966238021850586
dt=0.001010894775390625
dt=0.0020058155059814453
dt=0.0010018348693847656
dt=0.001966238021850586
dt=0.0020215511322021484
dt=0.0019714832305908203
dt=0.0010178089141845703
dt=0.0019807815551757812
dt=0.0010159015655517578
dt=0.001965761184692383
…
- 大部分時長都在2ms左右。
- 而且即便將
0.001
改至更小,仍是2ms,這與操作系統(tǒng)有關(guān),具體機制未做深入研究。 - 如果需要精確定時需要注意這個問題。
下面的代碼用在接收線程中
- 當(dāng)連續(xù)1秒鐘沒有數(shù)據(jù)是會拋出警告
- 由于需要響應(yīng)外部stop或者pause操作
- 所以sleep的時間片段都不能太長
no_frame_time = 0 while True: if self._stop: logger.info(f"xxxx stop.") break if self._pause: time.sleep(0.01) continue if len(self.msg_deque) == 0: st = time.time() time.sleep(0.001) # no_frame_time += 0.001 # 這寫法由于sleep不準(zhǔn)確,導(dǎo)致最早no_frame_time與實際值誤差特別大 et = time.time() - st no_frame_time += et # 此處是累積時間 if no_frame_time > 1: logging.warning("xxxx not arrived in last second.") self.fps_signal.emit(0) no_frame_time = 0 continue else: no_frame_time = 0 # ... 省略任務(wù)主體
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python執(zhí)行子進(jìn)程實現(xiàn)進(jìn)程間通信的方法
這篇文章主要介紹了python執(zhí)行子進(jìn)程實現(xiàn)進(jìn)程間通信的方法,涉及Python使用subprocess模塊操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下2015-06-06Python數(shù)據(jù)結(jié)構(gòu)之樹的全面解讀
數(shù)據(jù)結(jié)構(gòu)中有很多樹的結(jié)構(gòu),其中包括二叉樹、二叉搜索樹、2-3樹、紅黑樹等等。本文中對數(shù)據(jù)結(jié)構(gòu)中常見的樹邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)進(jìn)行了匯總,不求嚴(yán)格精準(zhǔn),但求簡單易懂2021-11-11Python使用tarfile模塊實現(xiàn)免費壓縮解壓
Python自帶的tarfile模塊可以方便讀取tar歸檔文件,厲害的是可以處理使用gzip和bz2壓縮歸檔文件tar.gz和tar.bz2,這篇文章主要介紹了Python使用tarfile模塊實現(xiàn)免費壓縮解壓,需要的朋友可以參考下2024-03-03Python3創(chuàng)建Django項目的幾種方法(3種)
這篇文章主要介紹了Python3創(chuàng)建Django項目的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-0610種檢測Python程序運行時間、CPU和內(nèi)存占用的方法
這篇文章主要介紹了10種檢測Python程序運行時間、CPU和內(nèi)存占用的方法,包括利用Python裝飾器或是外部的Unix Shell命令等,需要的朋友可以參考下2015-04-04python中使用xlrd讀excel使用xlwt寫excel的實例代碼
這篇文章主要介紹了python中使用xlrd讀excel使用xlwt寫excel的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-01-01python解析HTML并提取span標(biāo)簽中的文本
在網(wǎng)頁開發(fā)和數(shù)據(jù)抓取過程中,我們經(jīng)常需要從HTML頁面中提取信息,尤其是span元素中的文本,span標(biāo)簽是一個行內(nèi)元素,通常用于包裝一小段文本或其他元素,在Python中,我們可以通過使用BeautifulSoup或lxml等庫來解析HTML并提取span標(biāo)簽中的文本2024-12-12