這篇文章主要介紹了python3爬蟲中多線程的使用示例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
站在用戶的角度思考問題,與客戶深入溝通,找到平定網站設計與平定網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網站制作、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣、申請域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋平定地區(qū)。
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
一、Python的多線程爬蟲介紹:
1、Python的多線程并不如java的多線程,其差異在于當python解釋器開始執(zhí)行任務時,受制于GIL(全局解釋所),Python 的線程被限制到同一時刻只允許一個程執(zhí)行這樣一個執(zhí)行模型。
GIL介紹:
Python代碼的執(zhí)行由Python虛擬機(解釋器)來控制,同時只有一個線程在執(zhí)行。對Python虛擬機的訪問由全局解釋器鎖(GIL)來控制,正是這個鎖能保證同時只有一個線程在運行。
GIL功能:
為了線程間數據的一致性和狀態(tài)同步的完整性。
例如:線程2需要線程1執(zhí)行完成的結果,然而線程2又比線程1執(zhí)行時間短,線程2執(zhí)行完成,線程1仍然還在執(zhí)行,這就是數據的同步性。
2、Python 的線程更適用于處理 I/O 和其他需要并發(fā)行的阻塞操作(比如等待 I/O、等待從數據庫獲取數據等等),而不是需要多處理器行的計算密集型任務。幸運的是,爬蟲大部分時間在網絡交互上,所以可以使用多線程來編寫爬蟲。
二、多線程適用場景
在一個程序進程中,有些操作是比較耗時或者需要等待的。比如:等待數據庫的查詢結果的返回等待網頁結果的響應。
使用單線程:
處理器必須要等到這些操作完成之后才能繼續(xù)往下執(zhí)行其他操作,而這個線程在等待的過程中,處理器明顯是可以來執(zhí)行其他操作的。
使用多線程:
處理器就可以在某個線程等待時,去執(zhí)行其他的線程,從而從整體上提高執(zhí)行效率。
三、多線程爬蟲使用方法
t1 = threading.Thread(targe=func,args=(,)) t1.setDaemon(True) t1.start() #此時線程才會啟動
threading模塊是python中專門提供用來做多線程編程的模塊。threading模塊中最常用的類是Thread。
import threading import time def coding(): for x in range(3): print('%s正在寫代碼' % x) time.sleep(1) def drawing(): for x in range(3): print('%s正在畫圖' % x) time.sleep(1) def single_thread(): coding() drawing() def multi_thread(): t1 = threading.Thread(target=coding) t2 = threading.Thread(target=drawing) t1.start() t2.start() if __name__ == '__main__': multi_thread()
四、設置爬蟲代理IP
在做爬蟲的過程中,如果你爬取的頻率過快,不符合人的操作模式。有些網站的反爬蟲機制通過監(jiān)測到你的IP異常,訪問頻率過高。就會對你進行封IP處理。目前已有比較多的第三方平臺專門進行代理IP的服務。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“python3爬蟲中多線程的使用示例”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!
網頁題目:python3爬蟲中多線程的使用示例
地址分享:http://aaarwkj.com/article10/ihppgo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供全網營銷推廣、企業(yè)建站、品牌網站建設、定制開發(fā)、面包屑導航、網站制作
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)