您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python中schedule模塊的定時任務如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python中schedule模塊的定時任務如何使用”文章能幫助大家解決問題。
比如當滿足一定條件時,就取消定時任務,在這種場景下,不可能說把進程干掉,所以可以利用取消定時任務的功能
如下代碼,通過count控制當執行了5此以后,就取消定時任務
import schedule import time count=0 def do_func(name,age): global count count+=1 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年齡:"+str(age)) def main(): job=schedule.every(2).seconds.do(do_func,"張三豐",100) while True: if count>=5: schedule.cancel_job(job) schedule.run_pending() if __name__=="__main__": main()
執行結果如下,可以看到當執行完5此打印后,進程并沒有退出,但是定時任務不再執行了
2022-05-25 00:03:15 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:03:17 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:03:19 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:03:21 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:03:23 in do func : 姓名:張三豐 年齡:100
定時任務執行一次似乎是沒啥意義的,但是在某些場景下,比如執行了一定次數后,當滿足一定條件時只需要再執行一次,這個時候就派上用場了
如下為單純的只執行一次的定時任務
import time def do_func(name,age): print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年齡:"+str(age)) return schedule.CancelJob def main(): schedule.every(2).seconds.do(do_func,"張三豐",100) while True: schedule.run_pending() if __name__=="__main__": main()
執行結果如下,可以發現,執行完一次就不再執行了
2022-05-25 00:14:20 in do func : 姓名:張三豐 年齡:100
執行一次的定時任務的原理其實是在任務函數結尾返回了一個取消任務的消息,這里真正的價值在于將任務是否結束的決定權交給了任務函數,即可以在任務函數中進行條件判斷,當達到一定的業務邏輯條件時,可以返回取消定時任務的消息,這樣設置定時任務就更加靈活了
如下,可以在業務中判斷是否具備停下來的條件,當條件滿足了就停下來不再執行了
import schedule import time count=1 def do_func(name,age): global count count+=1 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年齡:"+str(age)) if count >= 5: print("已經執行5次了,達到預期結果了,不需要再執行了...") return schedule.CancelJob def main(): schedule.every(2).seconds.do(do_func,"張三豐",100) while True: schedule.run_pending() if __name__=="__main__": main()
執行結果如下:
2022-05-25 00:19:30 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:19:32 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:19:34 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:19:36 in do func : 姓名:張三豐 年齡:100
2022-05-25 00:19:38 in do func : 姓名:張三豐 年齡:100
已經執行5次了,達到預期結果了,不需要再執行了...
獲取所有的定時任務作用就是可以根據一定的條件,對某些滿足條件的定時任務進行各種操作如修改等
如下代碼為對間隔3的任務從每3秒修改為每3分鐘
import schedule import time def do_func(name,age): print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年齡:"+str(age)) def main(): schedule.every(2).seconds.do(do_func,"張三豐",100) schedule.every(3).seconds.do(do_func, "張三豐", 200) all_jobs=schedule.get_jobs() print("原始定時任務:") for job in all_jobs: print(job) for job in all_jobs: if job.interval ==3: job.unit="minutes" print("修改后的定時任務:") for job in all_jobs: print(job) if __name__=="__main__": main()
執行結果如下:
原始定時任務:
Job(interval=2, unit=seconds, do=do_func, args=('張三豐', 100), kwargs={})
Job(interval=3, unit=seconds, do=do_func, args=('張三豐', 200), kwargs={})
修改后的定時任務:
Job(interval=2, unit=seconds, do=do_func, args=('張三豐', 100), kwargs={})
Job(interval=3, unit=minutes, do=do_func, args=('張三豐', 200), kwargs={})
如下為取消所有任務的代碼,取消之前顯示有兩個任務,取消后顯示有0個定時任務
import schedule import time def do_func(name,age): print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年齡:"+str(age)) def main(): schedule.every(2).seconds.do(do_func,"張三豐",100) schedule.every(3).seconds.do(do_func, "張三豐", 200) print(len(schedule.get_jobs())) schedule.clear() print(len(schedule.get_jobs())) if __name__=="__main__": main()
執行結果為:
2
0
如下代碼演示了給任務打標簽,根據標簽挑選任務,根據標簽清除任務等操作
import schedule import time def do_func(name,age): print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" in do func : 姓名:"+name+" 年齡:"+str(age)) def main(): # 定義定時任務時直接打標簽 schedule.every(2).seconds.do(do_func,"張三豐",100).tag("demo1","demo2") schedule.every(3).seconds.do(do_func, "張三豐", 200).tag("demo2","demo3") schedule.every(4).seconds.do(do_func, "張三豐", 300).tag("demo3", "demo4") # 根據demo2標簽選擇任務 demo2=schedule.get_jobs("demo2") print("根據demo2標簽挑選出的任務") for job in demo2: print(job) # 根據標簽取消定時任務 schedule.clear("demo3") all_job=schedule.get_jobs() print("刪除demo3標簽的任務后,剩余的任務") for job in all_job: print(job) if __name__=="__main__": main()
執行結果如下:
根據demo2標簽挑選出的任務
Job(interval=2, unit=seconds, do=do_func, args=('張三豐', 100), kwargs={})
Job(interval=3, unit=seconds, do=do_func, args=('張三豐', 200), kwargs={})
刪除demo3標簽的任務后,剩余的任務
Job(interval=2, unit=seconds, do=do_func, args=('張三豐', 100), kwargs={})
關于“Python中schedule模塊的定時任務如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。