python 輪詢(xún)執(zhí)行某函數(shù)的2種方式
目標(biāo):python中每隔特定時(shí)間執(zhí)行某函數(shù)
方法1:使用python的Thread類(lèi)的子類(lèi)Timer,該子類(lèi)可控制指定函數(shù)在特定時(shí)間后執(zhí)行一次:
所以為了實(shí)現(xiàn)多次定時(shí)執(zhí)行某函數(shù),只需要在一個(gè)while循環(huán)中多次新建Timer即可。
from threading import Timer import time def printHello(): print ("Hello") print("當(dāng)前時(shí)間戳是", time.time()) def loop_func(func, second): #每隔second秒執(zhí)行func函數(shù) while True: timer = Timer(second, func) timer.start() timer.join() loop_func(printHello, 1)
運(yùn)行結(jié)果如下:
Hello 當(dāng)前時(shí)間戳是 1569224253.1897497 Hello 當(dāng)前時(shí)間戳是 1569224254.1911764 Hello 當(dāng)前時(shí)間戳是 1569224255.1924803 Hello 當(dāng)前時(shí)間戳是 1569224256.1957717 Hello 當(dāng)前時(shí)間戳是 1569224257.1964536 ……
方法2:使用time模塊的sleep函數(shù)可以阻塞程序執(zhí)行
import time def printHello(): print ("Hello") print("當(dāng)前時(shí)間戳是", time.time()) def loop_func(func, second): # 每隔second秒執(zhí)行func函數(shù) while True: func() time.sleep(second) loop_func(printHello, 1)
運(yùn)行結(jié)果如下:
Hello 當(dāng)前時(shí)間戳是 1569224698.5843027 Hello 當(dāng)前時(shí)間戳是 1569224699.5843854 Hello 當(dāng)前時(shí)間戳是 1569224700.5870178 Hello 當(dāng)前時(shí)間戳是 1569224701.5881224 Hello 當(dāng)前時(shí)間戳是 1569224702.588771 Hello 當(dāng)前時(shí)間戳是 1569224703.5896 Hello 當(dāng)前時(shí)間戳是 1569224704.5902 ……
總結(jié):感覺(jué)方法2更節(jié)約資源,因?yàn)橥瑯邮褂昧藈hile循環(huán),方法2沒(méi)有生成多余的線(xiàn)程,但是方法1會(huì)生成很多的線(xiàn)程
以上這篇python 輪詢(xún)執(zhí)行某函數(shù)的2種方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何存儲(chǔ)和讀取ASCII碼形式的byte數(shù)據(jù)
這篇文章主要介紹了Python如何存儲(chǔ)和讀取ASCII碼形式的byte數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05python項(xiàng)目以docker形式打包部署詳細(xì)流程
Docker是一個(gè)開(kāi)源項(xiàng)目,為開(kāi)發(fā)人員和系統(tǒng)管理員提供了一個(gè)開(kāi)放平臺(tái),可以將應(yīng)用程序構(gòu)建、打包為一個(gè)輕量級(jí)容器,并在任何地方運(yùn)行,這篇文章主要給大家介紹了關(guān)于python項(xiàng)目以docker形式打包部署的詳細(xì)流程,需要的朋友可以參考下2024-08-08python 環(huán)境變量和import模塊導(dǎo)入方法(詳解)
下面小編就為大家?guī)?lái)一篇python 環(huán)境變量和import模塊導(dǎo)入方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07使用Python的Flask框架表單插件Flask-WTF實(shí)現(xiàn)Web登錄驗(yàn)證
Flask處理表單除了本身的WTForms包,使用Flask-WTF擴(kuò)展來(lái)增強(qiáng)表單功能也是很多開(kāi)發(fā)者的選擇,這里我們就來(lái)講解如何使用Python的Flask框架表單插件Flask-WTF實(shí)現(xiàn)Web登錄驗(yàn)證2016-07-07Python IDLE 錯(cuò)誤:IDLE''''s subprocess didn''''t make connectio
這篇文章主要介紹了Python IDLE 錯(cuò)誤:IDLE's subprocess didn't make connection 的解決方案的相關(guān)資料,需要的朋友可以參考下2017-02-02Python設(shè)計(jì)模式之命令模式原理與用法實(shí)例分析
這篇文章主要介紹了Python設(shè)計(jì)模式之命令模式,結(jié)合具體實(shí)例形式分析了Python命令模式相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下2019-01-01淺析python表達(dá)式4+0.5值的數(shù)據(jù)類(lèi)型
在本篇文章里小編給大家整理的是一篇關(guān)于python表達(dá)式4+0.5值的數(shù)據(jù)類(lèi)型的知識(shí)點(diǎn)內(nèi)容,需要的的朋友們學(xué)習(xí)下。2020-02-02Pandas的read_csv函數(shù)參數(shù)分析詳解
這篇文章主要介紹了Pandas的read_csv函數(shù)參數(shù)分析詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07