這篇文章主要介紹了python如何實(shí)現(xiàn)多線程并發(fā)抓取,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),佛坪企業(yè)網(wǎng)站建設(shè),佛坪品牌網(wǎng)站建設(shè),網(wǎng)站定制,佛坪網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,佛坪網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
多線程并發(fā)抓取
單線程太慢的話,就需要多線程了,這里給個(gè)簡單的線程池模板 這個(gè)程序只是簡單地打印了1-10,但是可以看出是并發(fā)的。
雖然說Python的多線程很雞肋,但是對(duì)于爬蟲這種網(wǎng)絡(luò)頻繁型,還是能一定程度提高效率的。
from threading import Thread from Queue import Queue from time import sleep # q是任務(wù)隊(duì)列 #NUM是并發(fā)線程總數(shù) #JOBS是有多少任務(wù) q = Queue() NUM = 2 JOBS = 10 #具體的處理函數(shù),負(fù)責(zé)處理單個(gè)任務(wù) def do_somthing_using(arguments): print arguments #這個(gè)是工作進(jìn)程,負(fù)責(zé)不斷從隊(duì)列取數(shù)據(jù)并處理 def working(): while True: arguments = q.get() do_somthing_using(arguments) sleep(1) q.task_done() #fork NUM個(gè)線程等待隊(duì)列 for i in range(NUM): t = Thread(target=working) t.setDaemon(True) t.start() #把JOBS排入隊(duì)列 for i in range(JOBS): q.put(i) #等待所有JOBS完成 q.join()
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python如何實(shí)現(xiàn)多線程并發(fā)抓取”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!