一. 解析
其實很 簡單,假如我現在有三個線程,它要對一些數據進行處理,它的處理時間其實不一定比平常時候高很多。就是因爲GIL的存在。其實在每一個線程運算的過程中,其他的線程是無法運算的,是被鎖住的,只有線程1運算結束,進入IO了,其他的線程纔可以開始運算,所以開啓多線程做運算節約的其實是IO的時間。但是多線程如果用於聊天系統的發消息,收消息,就很方便。
二. 代碼
import threading
from queue import Queue
import copy
import time
def job(l, q):
res = sum(l)
q.put(res)
def multithreading(l):
q = Queue()
threads = []
for i in range(4):
t = threading.Thread(target=job, args=(copy.copy(l), q), name='T%i' % i)
t.start()
threads.append(t)
[t.join() for t in threads]
total = 0
for _ in range(4):
total += q.get()
print(total)
def normal(l):
total = sum(l)
print(total)
if __name__ == '__main__':
l = list(range(1000000))
s_t = time.time()
normal(l*4)
print('normal: ',time.time()-s_t)
s_t = time.time()
multithreading(l)
print('multithreading: ', time.time()-s_t)