python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例
問(wèn)題說(shuō)明
最近在寫(xiě)爬蟲(chóng),由于單個(gè)賬號(hào)訪問(wèn)頻率太高會(huì)被封,所以需要在爬蟲(chóng)執(zhí)行一段時(shí)間間隔后自己循環(huán)切換賬號(hào)
所以就在想,有沒(méi)有像單片機(jī)那樣子設(shè)置一個(gè)定時(shí)中斷,再定義一個(gè)中斷入口,這樣子每隔一段時(shí)間執(zhí)行一次中斷
當(dāng)然不能用sleep,這樣子整個(gè)進(jìn)程就停在這了,而不是接著爬數(shù)據(jù)
解決方法
用到threading的Timer,也類似單片機(jī)那樣子,在中斷程序中再重置定時(shí)器,設(shè)置中斷,python實(shí)例代碼如下
import threading
import time
def change_user():
print('這是中斷,切換賬號(hào)')
t = threading.Timer(3, change_user)
t.start()
#每過(guò)3秒切換一次賬號(hào)
t = threading.Timer(3, change_user)
t.start()
while True:
print('我在爬數(shù)據(jù)')
time.sleep(1)
輸出就像這樣子:
我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 這是中斷,切換賬號(hào) 我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 這是中斷,切換賬號(hào) 我在爬數(shù)據(jù)
現(xiàn)在問(wèn)題就解決啦!
再想想單獨(dú)對(duì)于這個(gè)例子來(lái)說(shuō)也是可以用sleep的,代碼如下
import threading
import time
def change_user():
while True:
print('這是中斷,切換賬號(hào)')
time.sleep(3)
def spider():
while True:
print('我在爬數(shù)據(jù)')
time.sleep(1)
t1 = threading.Thread(target=change_user)
t2 = threading.Thread(target=spider)
t2.start()
t1.start()
t2.join()
t1.join()
因?yàn)閮蓚€(gè)線程再執(zhí)行sleep的時(shí)候會(huì)釋放GIL鎖,被另一線程搶到GIL鎖,也可以實(shí)現(xiàn)定時(shí)切換賬號(hào),不過(guò)這個(gè)對(duì)于實(shí)際應(yīng)用可以不太方便,所以推薦使用第一種方法
以上這篇python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實(shí)例
今天小編就為大家分享一篇從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python游戲開(kāi)發(fā)實(shí)例之graphics實(shí)現(xiàn)AI五子棋
五子棋是經(jīng)典的棋牌類游戲,很多人都玩過(guò),那么如何用Python實(shí)現(xiàn)五子棋呢,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Python編寫(xiě)電話薄實(shí)現(xiàn)增刪改查功能
這篇文章主要為大家詳細(xì)介紹了Python編寫(xiě)電話薄實(shí)現(xiàn)增刪改查功能的相關(guān)資料,感興趣的朋友可以參考一下2016-05-05
關(guān)于Python中進(jìn)度條的六個(gè)實(shí)用技巧分享
在項(xiàng)目開(kāi)發(fā)過(guò)程中加載、啟動(dòng)、下載項(xiàng)目難免會(huì)用到進(jìn)度條,下面這篇文章主要給大家介紹了關(guān)于Python中進(jìn)度條的六個(gè)實(shí)用技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
python pycurl驗(yàn)證basic和digest認(rèn)證的方法
這篇文章主要介紹了python pycurl驗(yàn)證basic和digest認(rèn)證的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python項(xiàng)目打包并部署到Docker詳細(xì)步驟
這篇文章主要介紹了如何使用Docker將Python項(xiàng)目打包成鏡像并部署為容器,包括準(zhǔn)備工作、Python項(xiàng)目結(jié)構(gòu)、編寫(xiě)Dockerfile、構(gòu)建Docker鏡像、運(yùn)行容器、優(yōu)化鏡像大小、自動(dòng)化部署以及總結(jié),需要的朋友可以參考下2025-03-03

