GIL(全局解释器锁)

Posted ❦邪恶毅小人❦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIL(全局解释器锁)相关的知识,希望对你有一定的参考价值。


GIL(全局解释器锁) 
我们知道多进程(mutilprocess) 和 多线程(threading)的目的是用来被多颗CPU进行访问, 提高程序的执行效率。 但是在python内部存在一种机制(GIL),在多线程 时同一时刻只允许一个线程来访问CPU。 
GIL 并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。有名的编译器例如GCC,INTEL C++,Visual C++等。 
Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。像其中的JPython就没有GIL。然而因为CPython是大部分环境下默认的Python执行环境。所以在很多人的概念里CPython就是Python,也就想当然的把 GIL 归结为Python语言的缺陷。所以这里要先明确一点:GIL并不是Python的特性,Python完全可以不依赖于GIL。 
技术分享

 

虽然python支持多线程,但是由于GIL的限制,在实际运行时,程序运行后开启多个线程,但在通过GIL后同时也只能有一个线程被CPU执行。

以上是关于GIL(全局解释器锁)的主要内容,如果未能解决你的问题,请参考以下文章

Python 36 GIL全局解释器锁

GIL全局解释器锁及协程

GIL全局解释器锁

GIL全局解释器锁

GIL(全局解释器锁)

GIL全局解释器锁