您好,登錄后才能下訂單哦!
這篇文章主要介紹了python3爬蟲使用多線程運算是不是會比較快,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
多線程存在GIL(global interpret lock)。為了實現多線程功能,程序把線程鎖住,然后鎖住了之后,只有唯一一個線程運算。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)
運行結果
1999998000000 Normal : 0.1705458164215088 1999998000000 multi_threading : 0.14860320091247559
不用多線程是 0.1705秒;用了多線程僅僅是稍微快了一點。
感謝你能夠認真閱讀完這篇文章,希望小編分享python3爬蟲使用多線程運算是不是會比較快內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。