码迷,mamicode.com
首页 > 编程语言 > 详细

Python全局解释器锁(GIL)

时间:2018-08-08 22:56:05      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:安全性   系统   需要   为什么   input   python   安全   inter   代码   

GIL应该是面试的一个常考题,什么是GIL?
  GIL的全程是Global Interpre Lock(全局解释器锁)。
不是Python中有GIL,而是CPython中有全局解释器锁。(JPython中没有GIL)
GIL是一个互斥锁,CPython在执行多线程的时候并不是线安全的,为了程序的安全性考虑了全局解释器锁。
 
每个CPU在同一时间只能执行一个线程。
 
在Python多线程下,每个线程的执行都需要进行锁的竞争,只有拿到GIL的线程才能执行。
由于GIL的存在,python里一个进程永远只能同时执行一个线程,这就是为什么多核CPU上,python的多线程效率并不高。
 
因为GIL的存在,python的多线程对CPU密集型代码并不友好,对IO密集性代码比较友好。
 
1因为计算密集型的程序,需要占用系统资源。
GIL的存在,相当于始终在进行单线程运算,速度慢。
2.IO密集型影响不大的原因,IO,input/output,这两个词就表明程序的瓶颈在于输入
所消耗的时间,线程大部分时间再等待,所以他们是多个一起等(多线程)还是单个等(单线程)无所谓

多线程是共享内存的,即这些线程共用一个内存地址。好处在于便于线程间数据通信
和数据同步
多进程,各个进程地址之间是独立的内存地址。这样不存在地址之间通信就麻烦了

Python全局解释器锁(GIL)

标签:安全性   系统   需要   为什么   input   python   安全   inter   代码   

原文地址:https://www.cnblogs.com/materfont/p/9445936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!