首先我画了一张图来表示GIL运行的方式:
Python 3执行如下计算代码:
#-*-conding:utf-8-*-
import threading
import time
def add():
n = 1
for i in range(1000000):
n += i
print('加法结果',n) def multiplication():
m = 1
for i in range(1,100000):
m *= i
print('乘法结果:',m) now = time.time()
t1 = threading.Thread(target=add)
t2 = threading.Thread(target=multiplication)
t1.start()
t2.start()
t1.join()
t2.join()
end = time.time() - now
print('上面2个线程总共运行时间:',end)
结果:
# 加法结果 499999500001
# 乘法结果: 结果太长省去了
# 上面2个线程总共运行时间: 27.660937547683716
Python 2中计算如上代码:
结果:
# 加法结果 499999500001
# 乘法结果: 结果太长省去了
# 上面2个线程总共运行时间: 29.212000131607056
总结:
2个运行执行时间差不多 但是:
在计算密集型中,CPU涉及到轮询切换,时间会耗费更惨