python gil锁问题_Python的GIL与线程安全问题?[closed]

由于一些历史原因,CPython的GIL使得Python同一个时刻只能有一个线程在运行,这使得线程只能用于IO型任务,虽然异步更胜一筹。

但是既然同一个时刻只能有一个线程运行那为什么还会有线程安全,线程非安全之类的概念。threading模块提供的lock, rlock, event似乎没有什么必要。确实list等不是完全的线程安全,我也已经实验过了,所以多个线程都是操作list(写操作)会造成一些不可与料的结果。

我想问的是GIL既然能保证一个时刻只有一个线程能够运行,为什么list等数据结构不是线程安全的?

补充

gil控制的是字节码, 锁控制的是python代码,粒度不一样吧? 比如用锁控制的代码被编译成101条字节码 那么线程在执行这101条字节码的时候,cpu会被其他线程利用(python调度线程默认是100条字节码 调度一次)。

ps: 3.2以后增加一个时间调度。

答案

想歪了,GIL保证的是bytecode同一时刻只能被一个线程执行,但是同一个操作是对应多个bytecodes的,比如:

In [1]: import dis

In [2]: dis.dis(lambda x: x+1)

1 0 LOAD_FAST 0 (x)

3 LOAD_CONST 1 (1)

6 BINARY_ADD

7 RETURN_VALUE

假设这个线程刚好执行到了RETURN_VALUE让出了执行权,如果还有另外一个线程执行了相同操作,x的值就改变了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5页面主题,HTML5页面开发笔记

页面由设计决定, 所以首先聊聊设计稿前戏, 页面设计规范PSD设计稿的图层 "分组" 以及图层 "命名":设计稿中的每一个元素, 比如 唱片机, 设计师需要将所有属于唱片机的图层全部打到一个图层组里, 并且命名这个图层组为唱片机.这样开发人员可以快速的去单独导…

AC日记——Mato的文件管理 bzoj 3289

3289 思路&#xff1a; 莫队求区间逆序对个数&#xff0c;树状数组维护&#xff1b; 代码&#xff1a; #include <bits/stdc.h> using namespace std; #define maxn 50005 int bel[maxn],blo; struct QueryType {int l,r,id;bool operator<(const QueryType pos)const…

Python 什么时候会被取代?

来源&#xff1a;CSDN译者 | 弯月&#xff0c;责编 | 郭芮以下是译文&#xff1a; Python经过了几十年的努力才得到了编程社区的赏识。自2010年以来&#xff0c;Python得到了蓬勃发展&#xff0c;并最终超越了C、C#、Java和JavaScript。但是&#xff0c;这种趋势将持续到什么时…

java负数右移_Java中的按位右移运算符 - Break易站

在C / C 中&#xff0c;只有一个右移运算符>>&#xff0c;它只能用于正整数或无符号整数。在C / C 中不推荐使用右移运算符来表示负数&#xff0c;当用于负数时&#xff0c;输出依赖于编译器。与C 不同&#xff0c;Java支持以下两个右移操作符。Java中的按位右移运算符1)…

Android开发艺术探究Note

第一章&#xff1a;Activity的生命周期和启动模式 生命周期onPause表示activity正在停止&#xff0c;onPaus必须先执行完&#xff08;栈顶的activity&#xff09;&#xff0c;新的activity的onResume才会执行。onStop表示activity即将停止&#xff08;透明不会执行&#xff09;…

html设置焦点图片,HTML设置焦点

**插件简介**这是一款很有特点的HTML5图片切换焦点图动画&#xff0c;点击左右按钮即可将图片进行弹性切换&#xff0c;图片在被切换时&#xff0c;都会左右晃动几下&#xff0c;产生一定的弹性缓冲动画效果。[contenteditable]:focus{outline: none;}如果input失去焦点时,有进…

烧脑:宇宙时空结构是量子纠错码

来源&#xff1a;Future远见现在越来越多的理论物理学家开始相信&#xff0c;时空起源于纠缠的量子信息。粗略地讲&#xff0c;时空中最重要的“相邻”概念&#xff0c;可以认为是起源于量子纠缠&#xff1a;有纠缠就是相邻&#xff0c;没有纠缠就是不相邻。如果你相信这一观念…

dataframe 取2列_DataFrame通过两列进行分组,并获取另一列的计数

新手程序员在这里寻求帮助。我有一个看起来像这样的数据框&#xff1a;Cashtag Date Message0 $AAPL 2018-01-01 "Blah blah $AAPL"1 $AAPL 2018-01-05 "Blah blah $AAPL"2 $AAPL 2019-01-08 "Blah blah $AAPL"3 $AAPL 2019-02-09 "Blah bl…

解决黑苹果的887驱动问题

使用audio_cloverALC工具&#xff0c;下载地址https://github.com/toleda/audio_CloverALC/blob/master/audio_cloverALC-120.command.zip。 首先需要挂载efi分区 1 promote:~ asher$ diskutil list2 /dev/disk0 (internal, physical):3 #: TYPE NAME…

tornado 获取html,python使用tornado实现简单爬虫

本文实例为大家分享了python使用tornado实现简单爬虫的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下代码在官方文档的示例代码中有,但是作为一个tornado新手来说阅读起来还是有点困难的,于是我在代码中添加了注释,方便理解,代码如下:# codingutf-8#!/usr/bin/env p…

李德毅院士:通用人工智能十问

来源&#xff1a;学术头条共识&#xff1a;智能是学习的能力&#xff0c;以及解释、解决问题的能力&#xff1b;人工智能是脱离生命体的智能&#xff0c;是人类智能的体外延伸&#xff1b;通用人工智能通过不断学习&#xff0c;积累本领&#xff0c;进化成长&#xff0c;能够面…

gdt描述_全局描述符表GDT

写在前面添油加醋系列第二弹——剖析GDT话说C语言的话除了刷刷OJ外&#xff0c;就是用来实现操作系统这个大头了。C语言比C少了很多很多臃肿的语法特性&#xff0c;写起来非常优美(至少写操作系统是这样的)。虽说C有许多的奇技淫巧&#xff0c;一个算法有N种实现方法&#xff0…

咸阳高考成绩查询2021,2021咸阳市地区高考成绩排名查询,咸阳市高考各高中成绩喜报榜单...

距离2018年高考还有不到一个月的时间了&#xff0c;很多人在准备最后冲刺的同时&#xff0c;也在关心高考成绩。2018各地区高考成绩排名查询,高考各高中成绩喜报榜单尚未公布&#xff0c;下面是往年各地区高考成绩排名查询,高考各高中成绩喜报榜单&#xff0c;想要了解同学可以…

云计算与人工智能

来自&#xff1a;cnblogs.com/popsuper1982/p/8505203.html我今天要讲这三个话题&#xff0c;一个是云计算&#xff0c;一个大数据&#xff0c;一个人工智能&#xff0c;我为什么要讲这三个东西呢&#xff1f;因为这三个东西现在非常非常的火&#xff0c;它们之间好像互相有关系…

泸西一中2021高考成绩查询,云南红河州四所好高中,红河州一中一本率领先,建水一中不容小觑...

红河州地处我国西南&#xff0c;是一个常住人口超过467万的多民族聚居边疆自治州(地级行政区划)&#xff0c;下辖4市(县级)、9县(其中3个自治县)&#xff0c;经济总量在全省仅次于昆明与曲靖&#xff0c;是一个综合实力较强的自治州。红河州的基础教育实力相当不错&#xff0c;…

Date类

Date&#xff1a;是时间对象&#xff0c;它也是对象数据类型的一个细分 获取的是当前自己电脑的时间&#xff08;获取客户端的时间&#xff09; var nowTime new Date(); GMT&#xff1a;格林尼治时间&#xff08;经纬度都是0&#xff09; 中国是 GMT0800 东八区 美国是 UTC-0…

python 遍历list_Python列表遍历知多少

遍历列表中的所有元素是常用的一种操作&#xff0c;在遍历的过程中可以完成查询、处理等功能。在生活中&#xff0c;如果想要去商场买一件衣服&#xff0c;就需要在商场中逛一圈&#xff0c;看是否有想要买的衣服。逛商场的过程相当于列表的遍历操作。在Python中遍历列表的方法…

【JavaWeb】Maven(学习笔记)

一、Maven概述 1、Maven Maven 是一个项目管理工具 2、Maven解决的问题 jar 包问题编译测试运行打包 3、Maven的组成 项目对象模型 &#xff1a;pom.xml标准集合&#xff1a;目录结构标准一个项目生命周期(Project Lifecycle)依赖管理系统&#xff1a;通过配置文件管理用…

高中计算机学考操作ppt,高中信息技术基础学考专题复习(共25张PPT)

ID:11883433资源大小&#xff1a;308KB资料简介:信息的加工与管理 信息资源管理 计算机的功能与特征 文字处理:WORD 图表处理:EXCEL 多媒体信息处理:图像、音频、视频基本概念 算法及其实现 信息资源管理基本概念 网上数据的管理 数据库系统及简单应用:ACCESS 信息的表达 信息的…

自我监督学习:AI技术的未来发展方向

尽管深度学习已经在人工智能领域做出重大贡献&#xff0c;但这项技术本身仍存在一项致命缺陷&#xff1a;需要大量数据的加持。来源丨The Next Web尽管深度学习已经在人工智能领域做出重大贡献&#xff0c;但这项技术本身仍存在一项致命缺陷&#xff1a;需要大量数据的加持。深…