首先我画了一张图来表示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涉及到轮询切换,时间会耗费更惨

  
posted on 2018-05-30 17:36  Python哥  阅读(431)  评论(0编辑  收藏  举报