GIL计算python 2 和 python 3 计算密集型

时间:2022-01-03 05:56:53

首先我画了一张图来表示GIL运行的方式:

GIL计算python 2 和 python 3 计算密集型

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涉及到轮询切换,时间会耗费更惨