這篇文章主要介紹了python3爬蟲使用多線程運算是不是會比較快,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供東乃企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都做網(wǎng)站、html5、小程序制作等業(yè)務(wù)。10年已為東乃眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。
多線程存在GIL(global interpret lock)。為了實現(xiàn)多線程功能,程序把線程鎖住,然后鎖住了之后,只有唯一一個線程運算。Python只能夠讓線程在同一時間運算一個東西。在不停切換,看起來是多線程的。但實際上不是。
import threading from queue import Queue import copy import time def job(lists, q): res = sum(lists) q.put(res) def multi_theading(lists): q = Queue() threads = [] for i in range(4): t = threading.Thread(target=job, args=(copy.copy(lists), q), name = 'T%i'%i) t.start() threads.append(t) [t.join() for i in threads] total = 0 for _ in range(4): total += q.get() print(total) def normal(lists): # 完全不用多線程 total = sum(lists) print(total) if __name__ == '__main__': lists = list(range(1000000)) s_t = time.time() normal(lists*4) print('Normal : ', time.time() - s_t) s_t = time.time() multi_theading(lists) print('multi_threading : ', time.time() - s_t)
運行結(jié)果
1999998000000 Normal : 0.1705458164215088 1999998000000 multi_threading : 0.14860320091247559
不用多線程是 0.1705秒;用了多線程僅僅是稍微快了一點。
感謝你能夠認真閱讀完這篇文章,希望小編分享python3爬蟲使用多線程運算是不是會比較快內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!
名稱欄目:python3爬蟲使用多線程運算是不是會比較快
本文路徑:http://muchs.cn/article20/pdgjjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、微信小程序、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、響應式網(wǎng)站、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)