说说Python中的GIL是什么?

公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!

小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

废话不多说,开始今天的题目:

问:说说Python中的GIL是什么?

答:在Python中GIL是Global Interpreter Lock,即全局解释锁的缩写,保证了同一时刻只有一个线程在一个CPU上执行字节码,无法将多个线程映射到多个CPU上。这是CPython解释器的缺陷,由于CPython是大部分环境下默认的Python执行环境,而很多库都是基于CPython编写的,因此很多人将GIL归结为Python的问题。

这也是使得标准版本的Python并不能实现真正的多线程并发的直接原因。简单来说就是,一个Python进程永远不能在同一时刻使用多个CPU核心。GIL被设计来保护线程安全,由于多线程共享变量,如果不能很好的进行线程同步,多线程非常容易将线程改乱。

我们还是来看一下官方给出的解释:

In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)

大家要看具体的GIL分析,请参考这篇文章:

https://www.cnblogs.com/SuKiWX/p/8804974.html

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

20、说说HTTP常见响应状态码?

21、Python 单、双引号、三引号区别?

22、说说Python中猴子补丁是什么?

23、说说Python中的垃圾回收机制?

24、Python中有几种交换两个变量的值?

25、说说Python中的6种位运算符?

26、说说Python中的类型转换有哪些?

27、Python中实现二分查找的2种方法?

28、说说Python中的lambda表达式?

29、说说Python中的反射是什么?

30、Python删除list重复元素有几种方法?

31、Python中__new__和__init__的区别?

32、说说Python中的help()和dir()函数?

关注小猿公众号,每天学习一道题