cpython中自带的GIL全局解释器,GIL自己就是一把互斥锁python
重点:由于有了GIL全局解释器锁,致使了在同一进程的同一时刻只有一个线程在执行,没法利用多核优点
程序员
其实就算咱们在程序中写了一个线程的并行操做,实际上GIL会由于垃圾回收机制的问题,操做系统调度的问题,会把并行的线程仍是变成了串行,这正是这个GIL全局解释器锁致使了同一进程的同一时刻只有一个线程在运行,安全
Python代码的执行由Python虚拟机(也叫解释器主循环)来控制。Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行。虽然 Python 解释器中能够“运行”多个线程,但在任意时刻只有一个线程在解释器中运行。多线程
对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行。函数
在多线程环境中,Python 虚拟机按如下方式执行:操作系统
在调用外部代码(如 C/C++扩展函数)的时候,GIL将会被锁定,直到这个函数结束为止(因为在这期间没有Python的字节码被运行,因此不会作线程切换)编写扩展的程序员能够主动解锁GIL。线程
由于cpython自带的垃圾回收机制不是线程安全的,因此要有GIL锁.设计
致使了同一个进程下,同一时间只能运行一个线程,没法利用多核优点.code