gil  又称 global interpreter lock (全局解释器锁)

#python 中一个线程对应于c语言中的一个线程

#gil使得同一个时刻只有一个线程在一个cpu上执行字节码,无法将多个线程映射到多个cpu上执行

#gil 会根据执行的字节码的行数,时间片过长的,io操作,释放会gil全局解释锁。

import dis

def add(a):

  a = a+1

  return a

print(dis.dis(add))

#验证gil锁,并没有是线程同步变的安全

total = 0

def add():

  global total

  for i in range(100000):

    total += 1

def desc():

  global total

  for i in range(100000):

    total -= 1

import threading

thread1=threading.Tread(target=add)

thread2=threading.Thread(target=desc)

thread1.start()

thread2.start()

thread1.join()

thread2.join()

从 上面代码可以看出GiL不能保证线程安全,线程共享资源还是会抢占资源。

最新文章

  1. CSS float 定位和缩放问题
  2. mac homebrew的用法
  3. java如何提取url里的域名
  4. python递归理解图
  5. python 3.5.2安装mysql驱动报错
  6. word 2010自定义快捷键提高工作效率
  7. nginx location 匹配顺序
  8. Ruby入门教程和技巧
  9. JavaFx新手教程-布局-StackPane
  10. windows 下运行angualr/material2 项目
  11. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](八)
  12. 初学servlet之@WebServlet传参
  13. java 导出
  14. CMake--变量
  15. BZOJ3118 Orz the MST 【单纯形 + 生成树】
  16. Sqoop与HDFS、Hive、Hbase等系统的数据同步操作
  17. 内置变量WEBGL
  18. 《DSP using MATLAB》Problem 6.8
  19. AES-128-CBC C语言代码
  20. linux服务器管理员的12个有用的命令

热门文章

  1. php面向对象相关技术
  2. OpenCV笔记(2)(高斯平滑、腐蚀和膨胀、开闭运算、礼帽和黑帽、Sobel及其他算子)
  3. 动态调用WebService接口的几种方式
  4. python实现一个朴素贝叶斯分类方法
  5. jQuery_复制操作
  6. 关于多个py文件生成一个可运行exe文件(用pyinstaller)
  7. RedisTemplate集合使用说明-opsForList(二)
  8. springboot+mybatis 使用事务
  9. C++入门经典-例6.17-输出每行数组中的最小值
  10. 20175215 2018-2019-2 第四周Java课程学习总结