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=0
for i in range(100000990):
s +=i
print("累加的结果是:",s)
def mul():
s1=1
for i in range(1,10000):
s1 *= i
print("累乘的结果是:",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)
python GIL :全局解释器的更多相关文章
- Python自动化 【第九篇】:Python基础-线程、进程及python GIL全局解释器锁
		
本节内容: 进程与线程区别 线程 a) 语法 b) join c) 线程锁之Lock\Rlock\信号量 d) 将线程变为守护进程 e) Event事件 f) queue队列 g) 生 ...
 - python GIL全局解释器锁,多线程多进程效率比较,进程池,协程,TCP服务端实现协程
		
GIL全局解释器锁 ''' python解释器: - Cpython C语言 - Jpython java ... 1.GIL: 全局解释器锁 - 翻译: 在同一个进程下开启的多线程,同一时刻只能有一 ...
 - python GIL全局解释器锁与互斥锁 目录
		
python 并发编程 多线程 GIL全局解释器锁基本概念 python 并发编程 多线程 GIL与Lock python 并发编程 多线程 GIL与多线程
 - Python GIL全局解释器锁
		
'''在python原始解释器Cpython中存在GIL(Global Interpreter Lock,全局解释器锁),因此在执行Python代码 时,会产生互斥锁来限制线程对共享资源的访问,指导接 ...
 - Python之路-python(paramiko,进程和线程的区别,GIL全局解释器锁,线程)
		
一.paramiko 二.进程.与线程区别 三.python GIL全局解释器锁 四.线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生 ...
 - 【转】进程、线程、 GIL全局解释器锁知识点整理
		
转自:https://www.cnblogs.com/alex3714/articles/5230609.html 本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线 ...
 - 网络编程-Python高级语法-GIL全局解释器锁
		
知识点:GIL全局解释器锁其实和Python没有任何关系,是由于当初编写Python解释器时留下的,它只对多线程有影响,GIL保证同一时刻只有一个线程在运行,即使是多核配置电脑,同一时刻也只会让一个线 ...
 - [Python 多线程] GIL全局解释器锁 (十三)
		
Queue 标准库queue模块,提供FIFO(先进先出)的Queue.LIFO(后进先出)的队列.优先队列. Queue类是线程安全的,适用于多线程间安全的交换数据.内部使用了Lock和Condit ...
 - Python 36 GIL全局解释器锁 、vs自定义互斥锁
		
一:GIL全局解释器锁介绍 在CPython中,全局解释器锁(或GIL)是一个互斥锁, 它阻止多个本机线程同时执行Python字节码.译文:之所以需要这个锁, 主要是因为CPython的内存管理不是线 ...
 
随机推荐
- 怎样在 Ubuntu 16.04 强制 APT 包管理器使用 IPv4 | Linux 中国
			
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/82879401 https://mmbi ...
 - Spark2.2(三十九):如何根据appName监控spark任务,当任务不存在则启动(任务存在当超过多久没有活动状态则kill,等待下次启动)
			
业务需求 实现一个根据spark任务的appName来监控任务是否存在,及任务是否卡死的监控. 1)给定一个appName,根据appName从yarn application -list中验证任务是 ...
 - js正则提取数字小数,提取中文,提取英文
			
var value="污染物:PM2.5"; //提取中文 console.log(value.replace(/[^\u4E00-\u9FA5]/g,'')); //提取英文 c ...
 - 【TCP ZeroWindow】与【TCP window Full】
			
1.作为接收方,有接收窗口,也就是接收缓冲区,win=xxx 告诉对方,我的接收窗口大小. 2.当我的接收窗口满了,也就是win=0,Wireshark显示[TCP ZeroWindow],这个时候, ...
 - 【ASP.NET Core】从向 Web API 提交纯文本内容谈起
			
前些时日,老周在升级“华南闲肾回收登记平台”时,为了扩展业务,尤其是允许其他开发人员在其他平台向本系统提交有关肾的介绍资料,于是就为该系统增加了几个 Web API. 其中,有关肾的介绍采用纯文本方式 ...
 - 【Tensorflow】Tensorflow r1.0, Ubuntu, gpu, conda安装说明
			
Install Anaconda and python 1. cuda-8.0 download cuda_8.0.61_375.26_linux.run ./cuda_8.0.61_375.26_l ...
 - MySQL技术内幕读书笔记(五)——索引与算法
			
索引与算法 INNODB存储引擎索引概述  INNODB存储引擎支持以下几种常见的索引: B+树索引 全文索引 哈希索引  InnoDB存储引擎支持的哈希索引是自适应的.会根据表的情况自动添加  ...
 - 2017年PHP程序员未来路在何方
			
PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些技术的推 ...
 - Hive  根据表中某个字段动态分区  以及临时表创建
			
使用hive储存数据时,需要对做分区,如果从kafka接收数据,将每天的数据保存一个分区(按天分区),保存分区时需要根据某个字段做动态分区,而不是傻傻的将数据写到某一个临时目录最后倒入到某一个分区,这 ...
 - java幂等性的解决方案
			
一.幂等性概念 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数.这些函数不会影响系统状态,也 ...