溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在python中設(shè)置定時(shí)任務(wù)

發(fā)布時(shí)間:2021-04-27 16:05:52 來源:億速云 閱讀:292 作者:Leah 欄目:編程語言

怎么在python中設(shè)置定時(shí)任務(wù)?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

python的數(shù)據(jù)類型有哪些?

python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點(diǎn)型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識(shí),內(nèi)部元素用逗號(hào)隔開。6. 字典,字典是一種鍵值對(duì)的集合。7. 集合,集合是一個(gè)無序的、不重復(fù)的數(shù)據(jù)組合。

方法一:使用while true循環(huán)掛起(最容易)

import os
import time
import sys 
from datetime import datetime, timedelta
def One_Plan():
     # 設(shè)置啟動(dòng)周期
     Second_update_time = 24 * 60 * 60
 
    # 當(dāng)前時(shí)間
    now_Time = datetime.now()
    # 設(shè)置 任務(wù)啟動(dòng)時(shí)間
    plan_Time = now_Time.replace(hour=9, minute=0, second=0, microsecond=0)  
    # 設(shè)置差值,-1 day, 21:48:53.246576,類似于這樣
    # time.sleep()需要傳入int,所以下面使用.total_seconds() 
    # 主要用來計(jì)算差值,返回int,具體功能可以自行查閱相關(guān)資料
    delta = plan_Time - now_Time
    first_plan_Time = delta.total_seconds() % Second_update_time
    print("距離第一次執(zhí)行需要睡眠%d秒" % first_plan_Time)
    return first_plan_Time
 
# while Ture代碼塊,掛起程序,睡眠時(shí)間結(jié)束后調(diào)用函數(shù)名進(jìn)行執(zhí)行
while True:
 
    s1 = One_Plan()
    time.sleep(s1)
    # 下面這里是自己定義的函數(shù),想跑代碼的可以換成hellow world函數(shù)或者注釋掉這行測(cè)試下
    exe_file(D_list)
    print("正在執(zhí)行首次更新程序")

注意:一天執(zhí)行多個(gè)任務(wù)并且一天需要執(zhí)行多次。

如果爬蟲程序需要在晚上12點(diǎn)和早上6點(diǎn)、9點(diǎn),下午3點(diǎn)執(zhí)行四次,并且需要同時(shí)執(zhí)行4個(gè)爬蟲,還需要考慮到網(wǎng)絡(luò)是否穩(wěn)定,如果程序掛掉該怎么處理等等因素。

方法二:Timer模塊(最簡(jiǎn)單的定時(shí)啟動(dòng))

from datetime import datetime
from threading import Timer
import time
 
# 定時(shí)任務(wù)
def task():
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
 
def timedTask():
    '''
    第一個(gè)參數(shù): 延遲多長時(shí)間執(zhí)行任務(wù)(秒)
    第二個(gè)參數(shù): 要執(zhí)行的函數(shù)
    第三個(gè)參數(shù): 調(diào)用函數(shù)的參數(shù)(tuple)
    '''
    Timer(5, task, ()).start()
 
while True:
    timedTask()
    time.sleep(5)

方法三:sched模塊

import schedule
import time
 
def hellow():
    print('hellow')
 
def Timer():
    schedule.every().day.at("09:00").do(hellow)
    schedule.every().day.at("18:00").do(hellow)
 
    while True:
        schedule.run_pending()
 
        time.sleep('需要睡眠的周期')
 
 
Timer()

看完上述內(nèi)容,你們掌握怎么在python中設(shè)置定時(shí)任務(wù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI