一. 解析
其实很 简单,假如我现在有三个线程,它要对一些数据进行处理,它的处理时间其实不一定比平常时候高很多。就是因为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)