# 使用多线程方式运行连续加法,对比单线程运行连续加法时间,证明多线程对计算密集型没有太好的效果(python没有真正的多线程)
"""
1、由于python的GIL机制,导致python并没有真正的多线程,所以对于计算密集型模型,多线程的效率甚至有可能会低于单线程(因为会有线程切换)
2、python2多线程确实会比单线程慢,python3经过优化后多线程略高于单线程
"""
import threading
import time
def add(n):
num = 0
for i in range(n):
num += 1
print(num)
if __name__ == '__main__':
# 先执行非多线的
start1_time = time.time()
add(20000000)
add(50000000)
end1_time = time.time()-start1_time
print('单线程花费时间{}'.format(end1_time))
# 执行多线
t1 = threading.Thread(target=add, args=(20000000,))
t2 = threading.Thread(target=add, args=(50000000,))
start2_time = time.time()
t1.start()
t2.start()
t1.join()
t2.join()
end2_time = time.time() - start2_time
print('多线程花费时间{}'.format(end2_time))