黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例

系統(tǒng) 1918 0

問題說明

最近在寫爬蟲,由于單個(gè)賬號(hào)訪問頻率太高會(huì)被封,所以需要在爬蟲執(zhí)行一段時(shí)間間隔后自己循環(huán)切換賬號(hào)

所以就在想,有沒有像單片機(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()
#每過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)在問題就解決啦!

再想想單獨(dú)對(duì)于這個(gè)例子來(lái)說也是可以用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),不過這個(gè)對(duì)于實(shí)際應(yīng)用可以不太方便,所以推薦使用第一種方法

以上這篇python循環(huán)定時(shí)中斷執(zhí)行某一段程序的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論