GIL全局解释器锁

作者: 青蛙兄 分类: python,进阶 发布时间: 2019-12-22 17:35

CPython

CPython是特指C语言实现的Python,就是原汁原味的Python。

之所以使用CPython这个词,是因为Python还有一些其它的实现,比如Jython,就是Java版的Python,还有烧脑的PyPy,使用Python再把Python实现了一遍。

如下是官方对CPython的说明:

CPython is Guido van Rossum’s reference version of the Python computing language. It’s most often called simply “Python”; speakers say “CPython” generally to distinguish it explicitly from other implementations.

CPython在解释器进程级别有一把锁,叫GIL全局解释器锁

GIL保证CPython进程中,只有一个线程执行字节码,甚至是在多核CPU的情况下,也是如此

CPython中

IO密集型,由于线程阻塞,就会调度其他线程

CPU密集型,当前线程可能会连续的获得GIL,导致其他线程几乎无法使用CPU

IO密集型,使用多线程,CPU密集型,使用多线程,绕开GIL

新版CPython正在努力优化GIL的问题,但不是移除

如果非要使用多线程的效率问题,请绕行,选择其他语言erlang、Go等

注释:

Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

发表评论

电子邮件地址不会被公开。