亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python不要再使用while死循環(huán),定時器代替效果更佳

 更新時間:2023年03月27日 09:50:35   作者:Python 集中營  
在python開發(fā)的過程中,經(jīng)常見到小伙伴直接使用while True的死循環(huán)+sleep的方式來保存程序的一直運行。這種方式雖然能達到效果,但是說不定什么時候就直接崩潰了,其實使用定時器效果也不錯哦

在python開發(fā)的過程中,經(jīng)常見到小伙伴直接使用while True的死循環(huán)+sleep的方式來保存程序的一直運行。

這種方式雖然能達到效果,但是說不定什么時候就直接崩潰了。并且,在Linux環(huán)境中在檢測到while True的未知進程就會直接干掉。

面對這樣的業(yè)務(wù)場景,通常可以選擇使用定時器的方式來完成,況且用法也比較簡單。

在python中的定時任務(wù)用法通常有sched模塊/threading.QTimer模塊,sched模塊在之前的歷史文章中有過詳細說明。

今天介紹的這個定時模塊是某位大佬寫的APScheduler定時器框架,強烈推薦使用這種方式來完成定時任務(wù)的開發(fā)。

這里我們開發(fā)一個print_datetime函數(shù)來打印當(dāng)前的時間,同時也將print_time函數(shù)作為我們需要一直保持執(zhí)行的任務(wù)。

#?Importing?the?datetime?module.
import?datetime


def?print_time(message=None):
????"""
????It?prints?the?current?time,?optionally?preceded?by?a?message.

????:param?message:?The?message?to?print
????"""
????print(message,?datetime.datetime.now().strftime('%Y-%m-%d?%H:%M:%S'))

然后,我們準(zhǔn)備需要使用的定時任務(wù)模塊apscheduler,可以選擇pip的方式進行安裝,我個人一直使用的是這樣方式。

pip?install?apscheduler

#?Importing?the?BlockingScheduler?class?from?the?apscheduler.schedulers.blocking?module.
from?apscheduler.schedulers.blocking?import?BlockingScheduler

至此,我們便可以將需要保持一直處于執(zhí)行狀態(tài)的業(yè)務(wù)函數(shù),也就是這里的print_datetime函數(shù)作為定時中的任務(wù)執(zhí)行。

如此,我們就不用使用while True死循環(huán)+sleep的方式來使任務(wù)一直保存在運行形狀了。

#?Creating?a?scheduler?object.
scheduler?=?BlockingScheduler()

#?Adding?a?job?to?the?scheduler.
scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='cron',?second='*/1')??#?每秒執(zhí)行

#?Starting?the?scheduler?in?a?separate?thread.
scheduler.start()

最后,直接啟動當(dāng)前的.py文件就能直接執(zhí)行定時任務(wù)了,運行效果如下。

時間打印定時任務(wù) 2023-02-26 13:52:52
時間打印定時任務(wù) 2023-02-26 13:52:53
時間打印定時任務(wù) 2023-02-26 13:52:54
時間打印定時任務(wù) 2023-02-26 13:52:55
時間打印定時任務(wù) 2023-02-26 13:52:56
時間打印定時任務(wù) 2023-02-26 13:52:57

當(dāng)然,作為定時任務(wù)的框架apscheduler,他還有很多的技能。比如:按更復(fù)雜的周期執(zhí)行,在有限的時間內(nèi)執(zhí)行,單點執(zhí)行等等。

下面是我列出的比較常見的apscheduler定時任務(wù)的執(zhí)行方式,供小伙伴們參考,提出寶貴意見。

scheduler.add_job(func=print_time,?args=('任務(wù)只執(zhí)行一次,在下一次的時間執(zhí)行',),
??????????????????next_run_time=datetime.datetime.now()?+?datetime.timedelta(seconds=60))

scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='interval',?seconds=5)??#?每5秒執(zhí)行一次
scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='interval',?minutes=2)??#?每2分鐘執(zhí)行一次
scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='interval',?hours=1)??#?每1小時執(zhí)行一次

scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='cron',?minute='*',?second='1')??#?每分鐘執(zhí)行一次
scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='cron',?hour='*',?minute='0',
??????????????????second='0')??#?每小時執(zhí)行一次

scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='cron',?hour='20',?minute='0',
??????????????????second='0')??#?每天20:00執(zhí)行一次
scheduler.add_job(func=print_time,?args=('時間打印定時任務(wù)',),?trigger='cron',?hour='21')??#?每天21:00執(zhí)行一次

在使用過程中,apscheduler模塊是最簡單的調(diào)度類定時任務(wù),歡迎小伙伴留言討論!

到此這篇關(guān)于Python不要再使用while死循環(huán),定時器代替效果更佳的文章就介紹到這了,更多相關(guān)Python while死循環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論