這篇文章主要介紹了python3爬蟲使用多線程運(yùn)算是不是會比較快,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供東乃企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都做網(wǎng)站、html5、小程序制作等業(yè)務(wù)。10年已為東乃眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
多線程存在GIL(global interpret lock)。為了實(shí)現(xiàn)多線程功能,程序把線程鎖住,然后鎖住了之后,只有唯一一個線程運(yùn)算。Python只能夠讓線程在同一時間運(yùn)算一個東西。在不停切換,看起來是多線程的。但實(shí)際上不是。
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)
運(yùn)行結(jié)果
1999998000000 Normal : 0.1705458164215088 1999998000000 multi_threading : 0.14860320091247559
不用多線程是 0.1705秒;用了多線程僅僅是稍微快了一點(diǎn)。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python3爬蟲使用多線程運(yùn)算是不是會比較快內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!
名稱欄目:python3爬蟲使用多線程運(yùn)算是不是會比較快
本文路徑:http://www.jbt999.com/article20/pdgjjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、微信小程序、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)