首頁 >後端開發 >Python教學 >有沒有解決Python定時執行程式問題的方法?

有沒有解決Python定時執行程式問題的方法?

王林
王林轉載
2023-05-08 22:52:061218瀏覽

    Python定時執行程式(schedule)

    使用schedule函式庫

    import schedule
    import time
    def job():
        print("I'm working...")
    schedule.every(10).seconds.do(job) # 每10秒执行一次
    schedule.every().wednesday.at("13:15").do(job) # 每周三13点15执行
    schedule.every(10).minutes.do(job) # 每10分钟执行一次
    schedule.every().hour.do(job) # 每小时执行一次
    schedule.every().day.at("10:30").do(job) # 每天十点半执行
    schedule.every(5).to(10).minutes.do(job) # 每5-10分钟随机执行一次
    schedule.every().monday.do(job) # 每周一执行
    schedule.every().minute.at(":17").do(job) # 每分钟的17秒执行一次
    while True:
        schedule.run_pending() # 运行所有可运行的任务

    如果要設定在4:30執行,一定要寫schedule.every().day.at("04:30").do(job)

    而不能只寫schedule.every().day.at("4:30").do (job)

    注意,如果程式執行的時間要比你設定的時間間隔短,就是下一次定時程式開始執行的時候你上一次程式還沒執行完的話,就會新開進程。

    進程堆疊多了就會成災難

    python定時執行任務(schedule)時間延遲踩坑實錄

    透過schedule設定定時執行某個任務

    import schedule
    import time
    # 定义某个任务
    def job():
        ...
    # 设置执行时间
    schedule.every().seconds.do(job) # 每秒执行一次任务
    schedule.every().minutes.do(job) # 每分钟执行一次任务
    schedule.every().hour.do(job) # 每小时执行一次任务
    # 可以指定具体时间间隔
    schedule.every(10).minutes.do(job) # 每10分钟执行一次任务
    # 设置每天某一时刻执行
    schedule.every().day.at("05:15").do(job) # 每天凌晨5点15分执行任务
    # 设置星期几执行
    schedule.every().monday.at("05:15").do(job) # 每周一凌晨5点15分执行任务
    while True:
        schedule.run_pending() # 运行所有可运行的任务

    踩坑問題

    第一個注意的點是,你要先在手動執行程式來開啟服務(此時程式會暫停),然後才會在指定時間繼續執行。

    第二個注意的點是,在使用時,因為程式運行時間的存在,會出現時間延遲問題。例如透過程式碼設定每10分鐘跑一次,

    schedule.every(10).minutes.do(job) # 每10分钟执行一次任务

    結果出現

    有沒有解決Python定時執行程式問題的方法?

    #但是即下一次執行時間是從上一次程式執行結束時間10min來的,而我希望的應該是從上一次程式開始執行10min,即正確的應該是10:20:21,這樣下去會導致時間延遲越來越大。

    解決方法

    只需要加上一個具體時刻(這裡設定的是15s):

    schedule.every(10).minutes.at(":15").do(job) # 每10分钟过15s执行程序

    也就是說,在10:00:21開啟服務,

    第一次執行10:10:15,
    第二次執行10:20:15,
    第三次執行10:30:15,

    這樣就解決了程式運行時間所導致的時間延遲問題。

    注意! ! ! 首次開啟服務,一定要在目前時間的15秒之後執行程序,才是正常的。

    例如在10:00:08開啟服務,下次會在10:09:15分執行(異常)

    例如在10:00:21開啟服務,下次會在10:10:15分執行(正常)

    以上是有沒有解決Python定時執行程式問題的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除