1. 關(guān)于python定時(shí)器的一些思路分享

        共 1167字,需瀏覽 3分鐘

         ·

        2021-09-01 03:23

        定時(shí)器大家肯定都不陌生


        就是讓代碼在指定時(shí)間去執(zhí)行任務(wù)


        那假如讓你設(shè)計(jì)一個(gè)定時(shí)器


        你會(huì)怎么寫呢


        是不是這樣



        這個(gè)代碼很簡(jiǎn)單


        就是死循環(huán)每次休眠1s


        然后每次都獲取當(dāng)前時(shí)間


        跟指定時(shí)間做比較


        相同就執(zhí)行任務(wù)


        這里是每次休眠1s


        如果你想只精確到分


        那你可以延長休眠時(shí)間


        然后修改獲取本地時(shí)間的格式



        這樣即可


        然后每次可以休眠長一點(diǎn)


        例如30s,或者60s以內(nèi)


        這樣做確實(shí)沒問題


        但,


        你有沒有覺得有點(diǎn)麻煩



        而且這是在考慮代碼的延遲基本為0的情況


        如果你要精確到秒


        那么是不是可能會(huì)出現(xiàn)一點(diǎn)點(diǎn)偏差


        有這個(gè)可能性,但不大


        主要問題在哪里


        這個(gè)死循環(huán)


        著實(shí)看起來不是那么漂亮


        又或者


        假如我規(guī)定只需要工作日?qǐng)?zhí)行


        或者只要哪個(gè)時(shí)間段執(zhí)行


        或者我規(guī)定多少時(shí)間執(zhí)行一次


        那這個(gè)邏輯是不是就麻煩了許多



        因?yàn)樽罱?xiàng)目需求


        我也感覺到了這種方法的繁瑣


        于是就在尋找


        有沒有這樣一種框架


        可以異步定時(shí)執(zhí)行任務(wù)


        而且邏輯簡(jiǎn)單


        功夫不負(fù)有心人


        我覺得這個(gè)是肯定存在的


        不可能不存在這個(gè)東西


        于是乎,


        這個(gè)出現(xiàn)了


        apscheduler



        apscheduler的簡(jiǎn)單介紹



        總之就是


        比較nice


        安裝方式:


        pip install apscheduler


        然后過多的操作我也不多說了


        隨便搜兩篇帖子就看懂了


        簡(jiǎn)單介紹幾種方式



        直接看圖片即可


        很簡(jiǎn)單


        有三種方式


        date,cron,interval


        指定日期時(shí)間執(zhí)行一次


        指定時(shí)間每天執(zhí)行


        間隔時(shí)間執(zhí)行


        更多說明可以看官方文檔


        https://apscheduler.readthedocs.io/en/stable/


        還可以指定工作日,開始時(shí)間,結(jié)束時(shí)間,指定日期等等


        反正我用了是感覺非常方便



        有一個(gè)大問題


        如果就按照我剛才這樣寫


        你會(huì)發(fā)現(xiàn)


        假如你下面還有代碼


        像這樣



        你會(huì)發(fā)現(xiàn)


        這下面的是不會(huì)執(zhí)行的


        運(yùn)行結(jié)果是這樣



        原因就是


        他是堵塞的




        很明顯


        這不是我們想要的結(jié)果


        所以


        這里就要用異步的寫法


        把他放到一個(gè)線程里面去


        像這樣



        那么


        就不會(huì)阻塞了


        運(yùn)行結(jié)果是這樣



        第一次有4個(gè)1是因?yàn)榈谝粋€(gè)1沒有休眠


        這就看得到效果了


        如果用效果更明顯的操作


        那就是


        在要執(zhí)行的任務(wù)里面加休眠


        像這樣




        很明顯


        這個(gè)休眠是異步的


        任務(wù)里面的休眠


        并不會(huì)影響你外面函數(shù)的正常運(yùn)行


        這個(gè)提示是因?yàn)?br>



        基本上就是,你休眠的時(shí)候


        定時(shí)任務(wù)任然在執(zhí)行


        而當(dāng)前函數(shù)又還沒執(zhí)行完


        產(chǎn)生的沖突


        有解決辦法,也比較簡(jiǎn)單


        而且這應(yīng)該是只在interval才會(huì)出現(xiàn)的問題


        在date和cron這兩種不會(huì)出現(xiàn)


        好了


        更多說明和樣例請(qǐng)自行百度吧


        網(wǎng)上博客很多


        說的更詳細(xì)


        反正用起來


        比較簡(jiǎn)單


        也很方便


        趕快試試吧~


        如果還有問題


        可以進(jìn)讀者群


        一起討論哈哈哈




        感謝閱讀~


        歡迎關(guān)注公眾號(hào):SKpython


        -End-


        瀏覽 72
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 国产精品九九视频 | 日日夜夜AV | 北条麻妃中文字幕在线观看 | 亚洲午夜激情 | 老师的水好多 |