国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python--定時(shí)任務(wù)的四種方法】

這篇具有很好參考價(jià)值的文章主要介紹了【Python--定時(shí)任務(wù)的四種方法】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

當(dāng)每隔一段時(shí)間就要執(zhí)行一段程序,或者往復(fù)循環(huán)執(zhí)行某一個(gè)任務(wù),這就需要使用定時(shí)任務(wù)來(lái)執(zhí)行程序。應(yīng)用很廣泛,可以實(shí)現(xiàn)程序的自動(dòng)化,而不需要我們手動(dòng)的在規(guī)定時(shí)間內(nèi)執(zhí)行。如爬蟲(chóng),如定時(shí)器等等。以下將介紹幾種pyhton常用的定時(shí)任務(wù)方法。

while True:+sleep()

import datetime
import time


def task():
    now = datetime.datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)


def func():
    while True:
        task()
        time.sleep(5)


func()

【Python--定時(shí)任務(wù)的四種方法】

優(yōu)點(diǎn)

執(zhí)行簡(jiǎn)單,代碼容易理解

缺點(diǎn)

只能實(shí)現(xiàn)同步任務(wù),控制困難,而且sleep是個(gè)阻塞函數(shù)。應(yīng)用面也小,只能設(shè)置間隔,而不能指定具體的時(shí)間點(diǎn)。

threading.Timer定時(shí)器

timer最就是定時(shí)器,可以啟動(dòng)多個(gè)定時(shí)任務(wù),且是異步執(zhí)行,所以不存在等待順序執(zhí)行問(wèn)題。timer常用的幾種方法:

方法 說(shuō)明
Timer(interval, function, args=None, kwargs=None) 創(chuàng)建定時(shí)器
cancel() 取消定時(shí)器
start() 使用線程方式執(zhí)行
join(self, timeout=None) 等待線程執(zhí)行結(jié)束
from datetime import datetime
from threading import Timer


def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)


def func():
    task()
    # 定義一個(gè)定時(shí)器
    # 注意timer的語(yǔ)法
    # Timer(interval, function, args=None, kwargs=None)
    t = Timer(3, func)
    t.start()


func()

【Python--定時(shí)任務(wù)的四種方法】

多線程執(zhí)行


from datetime import datetime
from threading import Timer
import threading
 
 
def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)
 
 
def func():
    task()
    t = Timer(3, func)
    t.start()
 
 
if __name__ == '__main__':
    for i in range(3):
        thread = threading.Thread(None, func)
        thread.start()

【Python--定時(shí)任務(wù)的四種方法】

優(yōu)點(diǎn)

可以實(shí)現(xiàn)異步任務(wù),是非阻塞的。

缺點(diǎn)

但當(dāng)運(yùn)行次數(shù)過(guò)多時(shí),會(huì)出現(xiàn)報(bào)錯(cuò):Pyinstaller maximum recursion depth exceeded Error Resolution 達(dá)到最大遞歸深度,然后想到的是修改最大遞歸深度,但是運(yùn)行到達(dá)到最大CPU時(shí),python會(huì)直接銷毀程序。

Timeloop庫(kù)執(zhí)行定時(shí)任務(wù)

Timeloop是一個(gè)庫(kù),可用于運(yùn)行多周期任務(wù)。這是一個(gè)簡(jiǎn)單的庫(kù),使用decorator模式在線程中運(yùn)行標(biāo)記函數(shù)。

from datetime import datetime, timedelta
from timeloop import Timeloop
 
tl = Timeloop()
 
 
def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts + '333!')
 
 
def task2():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts + "555555!")
 
 
@tl.job(interval=timedelta(seconds=2))
def sample_job_every_2s():
    task()
 
 
@tl.job(interval=timedelta(seconds=5))
def sample_job_every_5s():
    task2()

調(diào)度模塊schedule

schedule是一個(gè)第三方輕量級(jí)的任務(wù)調(diào)度模塊,可以按照秒,分,小時(shí),日期或者自定義事件執(zhí)行時(shí)間。
如果想執(zhí)行多個(gè)任務(wù),也可以添加多個(gè)task。


import schedule
from datetime import datetime
 
 
def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)
 
 
def task2():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts + '666!')
 
 
def func():
    # 清空任務(wù)
    schedule.clear()
    # 創(chuàng)建一個(gè)按3秒間隔執(zhí)行任務(wù)
    schedule.every(3).seconds.do(task)
    # 創(chuàng)建一個(gè)按2秒間隔執(zhí)行任務(wù)
    schedule.every(2).seconds.do(task2)
    while True:
        schedule.run_pending()
 
 
func()

優(yōu)缺點(diǎn)

需要和while Ture配合使用,而且占用的CPU也比其他幾種多的多,占用內(nèi)存也是較大。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-442645.html

到了這里,關(guān)于【Python--定時(shí)任務(wù)的四種方法】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • pip安裝python第三方庫(kù)的四種方法

    pip安裝python第三方庫(kù)的四種方法

    pip install 庫(kù)名 打開(kāi)命令提示符【win + r】,輸入cmd,在命令提示窗口輸入pip install 庫(kù)名, 再點(diǎn)擊回車鍵【Enter】,就可以安裝。當(dāng)安裝成功時(shí),會(huì)提示successfully。例如,安裝pytest庫(kù) 使用該方法會(huì)存在由于網(wǎng)絡(luò)不穩(wěn)定時(shí)就無(wú)法安裝成功的情況,遇到此情況時(shí),可以多嘗試幾次,若

    2024年01月17日
    瀏覽(33)
  • 用 Python 從單個(gè)文本中提取關(guān)鍵字的四種超棒的方法

    用 Python 從單個(gè)文本中提取關(guān)鍵字的四種超棒的方法

    自然語(yǔ)言處理分析的最基本和初始步驟是提取,在NLP中,我們有許多算法可以幫助我們提取文本數(shù)據(jù)的。本文中,云朵君將和大家一起學(xué)習(xí)四種即簡(jiǎn)單又有效的方法,它們分別是 Rake、Yake、Keybert 和 Textrank 。并將簡(jiǎn)單概述下每個(gè)方法的使用場(chǎng)景,然后使用附加示

    2023年04月08日
    瀏覽(15)
  • Hive的四種排序方法

    hive排序方法,hive的排序方式 hive有四種排序方法: ORDER BY 、SORT BY 、DISTRIBUTE BY 、CLUSTER BY 0. 測(cè)試數(shù)據(jù)準(zhǔn)備 uuid dept salary 1001 研發(fā)部 16000 1002 市場(chǎng)部 17000 1003 銷售部 11000 1004 研發(fā)部 15000 1005 銷售部 12000 1006 研發(fā)部 21000 1007 產(chǎn)品部 16000 1008 研發(fā)部 18000 1009 市場(chǎng)部 17000 1010 產(chǎn)品部 16

    2024年02月02日
    瀏覽(22)
  • 最大公約數(shù)的四種方法

    最大公約數(shù)的四種方法

    求兩數(shù)的最大公約數(shù),一共有四種方法:暴力窮舉法、更相減損法、輾轉(zhuǎn)相除法、stein 算法,小女不才,花了幾天的時(shí)間終于把這幾種方法全部弄明白,現(xiàn)在就把它們?nèi)糠窒沓鰜?lái)。 首先,假設(shè)被求的兩個(gè)數(shù)為 x、y,且 x y。最大公約數(shù) d = gcd (x , y) 正如名字所說(shuō),暴擊窮舉法

    2024年02月05日
    瀏覽(33)
  • 數(shù)據(jù)的四種基本存儲(chǔ)方法

    數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)可用以下四種基本存儲(chǔ)方法得到: ( 1 )順序存儲(chǔ)方法 ??? 該方法把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置上相鄰的存儲(chǔ)單元里,結(jié)點(diǎn)間的邏輯關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來(lái)體現(xiàn)。 ??? 由此得到的存儲(chǔ)表示稱為順序存儲(chǔ)結(jié)構(gòu)??(Sequential Storage Structure),通常借

    2024年02月15日
    瀏覽(19)
  • 檢測(cè)數(shù)據(jù)類型的四種方法

    檢測(cè)數(shù)據(jù)類型的四種方法

    一、數(shù)據(jù)類型: 1、基本數(shù)據(jù)類型:String、Number、Boolean、Null、Undefined、Symbol 、BigInt 2、引用數(shù)據(jù)類型:Object、Array、Function、Date、RegExp 二、檢測(cè)數(shù)據(jù)類型的四種方法 1.typeof檢測(cè) ? 特點(diǎn):typeof只能檢測(cè)基本數(shù)據(jù)類型(除了null),不能準(zhǔn)確的檢測(cè)引用數(shù)據(jù)類型。 object、array、

    2024年02月15日
    瀏覽(17)
  • Hive數(shù)據(jù)導(dǎo)出的四種方法

    hive數(shù)據(jù)倉(cāng)庫(kù)有多種數(shù)據(jù)導(dǎo)出方法,我在本篇文章中介紹下面的四種方法供大家參考: Insert語(yǔ)句導(dǎo)出、Hadoop命令導(dǎo)出、Hive shell命令導(dǎo)出、Export語(yǔ)句導(dǎo)出。 Hive支持將select查詢的結(jié)果導(dǎo)出成文件存放在文件系統(tǒng)中。語(yǔ)法格式如下; 注意: 導(dǎo)出操作是一個(gè)OVERWRITE覆蓋操作,慎重

    2024年01月17日
    瀏覽(21)
  • 有關(guān)實(shí)現(xiàn)深拷貝的四種方法

    有關(guān)實(shí)現(xiàn)深拷貝的四種方法

    ????????深拷貝與淺拷貝: ????????在開(kāi)始之前我們需要先了解一下什么是淺拷貝和深拷貝,其實(shí)深拷貝和淺拷貝都是針對(duì)的引用類型,JS中的變量類型分為值類型(基本類型)和引用類型;對(duì)值類型進(jìn)行復(fù)制操作會(huì)對(duì)值進(jìn)行一份拷貝,而對(duì)引用類型賦值,則會(huì)進(jìn)行地址

    2024年02月04日
    瀏覽(16)
  • MySQL批量更新的四種方法

    MySQL批量更新的四種方法

    最近做一個(gè)需求,更新3w條數(shù)據(jù),一個(gè)一個(gè)update去更新的,結(jié)果花了80分鐘,這樣性能上很差,也容易阻塞,所以就找了一些MySQL批量更新的方式,在此記錄一下 這種更新會(huì)將其它字段更新為默認(rèn)值,因?yàn)樗窍葘⒅貜?fù)記錄刪掉再更新,謹(jǐn)慎使用 1 2 replace into ` user ` (id,age) va

    2024年02月16日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包