Python中的多线程没有真正实现多现程! 为什么这么说,我们了解一个概念,全局解释器锁(GIL)。

Python代码的执行由Python虚拟机(解释器)来控制。

Python在设计之初就考虑要在主循环中,同时只有一个线程在执行,

就像单CPU的系统中运行多个进程那样,内存中可以存放多个程序,

但任意时刻,只有一个程序在CPU中运行。

同样地,虽然Python解释器可以运行多个线程,只有一个线程在解释器中运行。

对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同时只有一个线程在运行。在多线程环境中,Python虚拟机按照以下方式执行。

1.设置GIL。

2.切换到一个线程去执行。

3.运行。

4.把线程设置为睡眠状态。

5.解锁GIL。

6.再次重复以上步骤。

 python 每执行100个字节码,GIL锁就会解锁一次,让其它线程执行,所以,python多线程环境,是交替执行,上下文切换,并没有同一时刻执行代码.

最新文章

  1. C#机器视觉入门系列1-转化为灰度图&&3*3模糊
  2. 做一个会PS切图的前端开发
  3. Python简单时间日期处理
  4. iPhone各控件的默认高度
  5. jquery css快捷方法
  6. Windows7防火墙服务无法启用怎么办
  7. R语言的日期运算
  8. SaaS应用“正益工作”发布,为大中型企业轻松构建移动门户
  9. 写一个自己定义进度颜色和圆形转动的ProgressBar(具体介绍)
  10. Android的Eclipse升级笔记
  11. 【转】oracle中触发器中:new和:old 的使用方法
  12. iOS 屏幕旋转 nav+tabbar+present(网页) 2016
  13. [ZETCODE]wxWidgets教程一:介紹
  14. js 回车触发事件
  15. 为什么在有的服务器上禅道、蝉知安装会报错? 之理解MySQL的SQL_MODE
  16. [UE4]自定义函数,快速增加输入参数的一种方法
  17. 【原创】backbone1.1.0源码解析之Events
  18. Dubbo的特点
  19. 文件上传(Servlet/Struts2/SpringMVC)
  20. sqlserver-查阻塞

热门文章

  1. mac:Go安装和配置+GoLand安装和使用之完整教程
  2. selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None;Message: unexpected alert open: {Alert text : 您点击的频率过快!请稍后再试}
  3. linux java 安装
  4. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库04 —— 安装HAWQ插件PXF3.3.0.0
  5. win10专业版密钥 亲测可用 不断更新
  6. js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合
  7. LostRoutes项目日志——玩家飞机精灵Fighter解析
  8. Bash script set help function
  9. react build后直接从浏览器打开
  10. Linux系统挂载windows共享目录报错mount error(121):remote error I/O error