python的并发GIL 了解
2024-09-05 16:32:21
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不能保证线程安全,线程共享资源还是会抢占资源。
最新文章
- CSS float 定位和缩放问题
- mac homebrew的用法
- java如何提取url里的域名
- python递归理解图
- python 3.5.2安装mysql驱动报错
- word 2010自定义快捷键提高工作效率
- nginx location 匹配顺序
- Ruby入门教程和技巧
- JavaFx新手教程-布局-StackPane
- windows 下运行angualr/material2 项目
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](八)
- 初学servlet之@WebServlet传参
- java 导出
- CMake--变量
- BZOJ3118 Orz the MST 【单纯形 + 生成树】
- Sqoop与HDFS、Hive、Hbase等系统的数据同步操作
- 内置变量WEBGL
- 《DSP using MATLAB》Problem 6.8
- AES-128-CBC C语言代码
- linux服务器管理员的12个有用的命令
热门文章
- php面向对象相关技术
- OpenCV笔记(2)(高斯平滑、腐蚀和膨胀、开闭运算、礼帽和黑帽、Sobel及其他算子)
- 动态调用WebService接口的几种方式
- python实现一个朴素贝叶斯分类方法
- jQuery_复制操作
- 关于多个py文件生成一个可运行exe文件(用pyinstaller)
- RedisTemplate集合使用说明-opsForList(二)
- springboot+mybatis 使用事务
- C++入门经典-例6.17-输出每行数组中的最小值
- 20175215 2018-2019-2 第四周Java课程学习总结