python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例
問題說明
最近在寫爬蟲,由于單個(gè)賬號訪問頻率太高會被封,所以需要在爬蟲執(zhí)行一段時(shí)間間隔后自己循環(huán)切換賬號
所以就在想,有沒有像單片機(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('這是中斷,切換賬號') t = threading.Timer(3, change_user) t.start() #每過3秒切換一次賬號 t = threading.Timer(3, change_user) t.start() while True: print('我在爬數(shù)據(jù)') time.sleep(1)
輸出就像這樣子:
我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 這是中斷,切換賬號 我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 我在爬數(shù)據(jù) 這是中斷,切換賬號 我在爬數(shù)據(jù)
現(xiàn)在問題就解決啦!
再想想單獨(dú)對于這個(gè)例子來說也是可以用sleep的,代碼如下
import threading import time def change_user(): while True: print('這是中斷,切換賬號') 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í)候會釋放GIL鎖,被另一線程搶到GIL鎖,也可以實(shí)現(xiàn)定時(shí)切換賬號,不過這個(gè)對于實(shí)際應(yīng)用可以不太方便,所以推薦使用第一種方法
以上這篇python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Jupyter?Notebook出現(xiàn)不是內(nèi)部或外部的命令解決方案
這篇文章主要介紹了Jupyter?Notebook出現(xiàn)不是內(nèi)部或外部的命令解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06python實(shí)現(xiàn)求兩個(gè)字符串的最長公共子串方法
今天小編就為大家分享一篇python實(shí)現(xiàn)求兩個(gè)字符串的最長公共子串方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07python人工智能tensorflow常見損失函數(shù)LOSS匯總
這篇文章主要為大家介紹了python人工智能tensorflowf常見損失函數(shù)LOSS匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python查詢oracle數(shù)據(jù)庫速度慢的解決方案
這篇文章主要介紹了Python查詢oracle數(shù)據(jù)庫速度慢的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04PyTorch加載預(yù)訓(xùn)練模型實(shí)例(pretrained)
今天小編就為大家分享一篇PyTorch加載預(yù)訓(xùn)練模型實(shí)例(pretrained),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01基于tensorflow __init__、build 和call的使用小結(jié)
這篇文章主要介紹了基于tensorflow __init__、build 和call的使用小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02python神經(jīng)網(wǎng)絡(luò)使用Keras進(jìn)行模型的保存與讀取
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用Keras進(jìn)行模型的保存與讀取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05