python GIL :全局解释器
cpython 解释器中存在一个GIL(全局解释器锁),无论多少个线程、多少颗cpu
他的作用就是保证同一时刻只有一个线程可以执行代码,因此造成了我们使用多线程的时候无法实现并行。
因为有GIL的存在、所以同一时刻只能有一个线程被CPU执行
任务:IO 密集型:可以采用多线程(多进程+协成)
计算密集型:python不适用
(1)IO 密集型、CPU会是实现自动切换 提高工作效率
def ListenMusic(name):print("beging listening to %s,%s" %(name,time.ctime()))time.sleep(5)print("end listening %s" % time.ctime()) def Recordlog(name):print("beging recoding to %s,%s" %(name,time.ctime()))time.sleep(5)print("end recoding %s" % time.ctime()) if __name__ == '__main__':threads=[]t1=threading.Thread(target=ListenMusic,args=("凤凰传奇",))t2=threading.Thread(target=Recordlog,args=("python多线程",))threads.append(t1)threads.append(t2)for t in threads:t.start()
(2) 计算密集型 cpu 一直处于工作状态、没有io流的切换、不适用多进程
import threading,time def add():s=0for i in range(100000990):s +=iprint("累加的结果是:",s) def mul():s1=1for i in range(1,10000):s1 *= iprint("累乘的结果是:",s1) if __name__ == '__main__':start= time.time()L = []t1=threading.Thread(target=add)t2=threading.Thread(target=mul)L.append(t1)L.append(t2)for t in L:t.start()for t in L:t.join()print("总共花费时间",time.time()-start)
转载于:https://www.cnblogs.com/tsgxj/p/9251777.html
python GIL :全局解释器相关推荐
- Python GIL全局解释器锁
目录 GIL全局解释器锁 一.引入: 二.GIL介绍 三.GIL与Lock 四.GIL与多线程 总结 GIL全局解释器锁 一.引入: 首先要明白,GIL并不是Python的一个特性,其实在我们通常所称 ...
- python GIL 全局解释器锁详解
Python多线程另一个很重要的话题--GIL(Global Interpreter Lock,即全局解释器锁)鲜有人知,甚至连很多Python老司机都觉得GIL就是一个谜 一.一个不解之谜 耳听为虚 ...
- python GIL(全局解释器锁)
python C 解释器有一个叫GIL 的东西作用: 每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码. 所以在python中,如果对于CPU密集型任务,多线程是没有用的 ...
- python gil 解除_详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
先看一道GIL面试题: 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因. GIL:又叫全局解 ...
- Python中的GIL(全局解释器锁)
1. GIL全称Global Interpreter Lock,每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码. 2.GIL的缺点 GIL使Python不能充分利用多核心 ...
- python基础--GIL全局解释器锁、Event事件、信号量、死锁、递归锁
ps:python解释器有很多种,最常见的就是C python解释器 GIL全局解释器锁: GIL本质上是一把互斥锁:将并发变成串行,牺牲效率保证了数据的安全 用来阻止同一个进程下的多个线程的同时执行 ...
- 【Python爬虫学习笔记11】Queue线程安全队列和GIL全局解释器锁
Queue线程安全队列 在Python多线程编程中,虽然threading模块为我们提供了Lock类和Condition类借助锁机制来处理线程并发执行,但在实际开发中使用加锁和释放锁仍是一个经常性的且 ...
- Python高级——GIL全局解释器锁问题
GIL全局解释器锁 GIL全局解释器锁是cpython解释器内部的一把锁,和python中的lock锁不是一个层面. GIL产生的背景:在cpython解释内部运行多个线程的时候,每个线程都需要解释器 ...
- python gil全局锁_什么是Python全局解释器锁(GIL)?
python gil全局锁 The Python Global Interpreter Lock or GIL, in simple words, is a mutex (or a lock) tha ...
最新文章
- oracle 11.2.0.3 asm非rac双机,oracle11.2.0.4 rac asm启动故障
- Android webview 加载https网页显示空白
- 明科在线客服系统PHP_在线客服系统的标准功能有哪些
- 悉数11种主流NoSQL文档型数据库
- Django编写RESTful API(二):请求和响应
- 济南python工资一般多少-Python火到天际,可是为啥找工作这么难?
- Camera 花屏、分屏、卡屏,黑屏问题分析
- mysql简单人事管理系统_简易人事管理系统(pyqt5+mysql)
- Android——基本组件-2
- 【hadoop生态之Flume】概念【笔记+代码】
- 电子不停车收费系统(ETC)专题(1)——系统概述
- 八字易经算法之用JAVA实现完整排盘系统
- Oracle安装提示无效条目,oracle NET 无效条目,要求有效的“服务名”
- 冷启动问题——协同过滤(推荐系统)
- 基于WIFI无线组网的水雨情远程监测预警系统
- MySQL数据库—多表查询
- v1 中兴f450g_上海电信中兴F450G v2.0 改桥接
- [转]手机按键生产工艺简介
- GAMP_INS 从零开始实现PPP/INS紧组合(一)
- jvm crash分析