Python基础(十三) 为什么说python多线程没有真正实现多现程
2024-10-19 12:39:42
Python中的多线程没有真正实现多现程! 为什么这么说,我们了解一个概念,全局解释器锁(GIL)。
Python代码的执行由Python虚拟机(解释器)来控制。
Python在设计之初就考虑要在主循环中,同时只有一个线程在执行,
就像单CPU的系统中运行多个进程那样,内存中可以存放多个程序,
但任意时刻,只有一个程序在CPU中运行。
同样地,虽然Python解释器可以运行多个线程,只有一个线程在解释器中运行。
对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同时只有一个线程在运行。在多线程环境中,Python虚拟机按照以下方式执行。
1.设置GIL。
2.切换到一个线程去执行。
3.运行。
4.把线程设置为睡眠状态。
5.解锁GIL。
6.再次重复以上步骤。
python 每执行100个字节码,GIL锁就会解锁一次,让其它线程执行,所以,python多线程环境,是交替执行,上下文切换,并没有同一时刻执行代码.
最新文章
- C#机器视觉入门系列1-转化为灰度图&;&;3*3模糊
- 做一个会PS切图的前端开发
- Python简单时间日期处理
- iPhone各控件的默认高度
- jquery css快捷方法
- Windows7防火墙服务无法启用怎么办
- R语言的日期运算
- SaaS应用“正益工作”发布,为大中型企业轻松构建移动门户
- 写一个自己定义进度颜色和圆形转动的ProgressBar(具体介绍)
- Android的Eclipse升级笔记
- 【转】oracle中触发器中:new和:old 的使用方法
- iOS 屏幕旋转 nav+tabbar+present(网页) 2016
- [ZETCODE]wxWidgets教程一:介紹
- js 回车触发事件
- 为什么在有的服务器上禅道、蝉知安装会报错? 之理解MySQL的SQL_MODE
- [UE4]自定义函数,快速增加输入参数的一种方法
- 【原创】backbone1.1.0源码解析之Events
- Dubbo的特点
- 文件上传(Servlet/Struts2/SpringMVC)
- sqlserver-查阻塞
热门文章
- mac:Go安装和配置+GoLand安装和使用之完整教程
- selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None;Message: unexpected alert open: {Alert text : 您点击的频率过快!请稍后再试}
- linux java 安装
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库04 —— 安装HAWQ插件PXF3.3.0.0
- win10专业版密钥 亲测可用 不断更新
- js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合
- LostRoutes项目日志——玩家飞机精灵Fighter解析
- Bash script set help function
- react build后直接从浏览器打开
- Linux系统挂载windows共享目录报错mount error(121):remote error I/O error