参考
Python GIL 系列之通过实例认识Python的GIL
概述
GIL:GlobalInterpreterLock,是cPython中用来防止多线程同时执行同一个python字节码的互斥锁。由于cPython中的线程是不安全的,所以cPython必须需要使用GIL来保障线程安全。
GIL的影响
由于GIL的存在,导致多线程无法同时执行python,所以会导致多线程并不会“并行“执行,而是“串行“执行。
所以多线程在一定程度上并不会提高执行的效率以及性能。相反可能导致执行效率的下降,尤其当多线程运行在多处理器多操作系统时。此部分在后面会做详细的对比测试以及分析。
GIL实现
(TODO:该部分是翻译的官方内容,具体还待研究)
Jython以及IronPython没有GIL,并且可以利用多处理器
PyPy有个类似GIL的实现
CPython中有GIL,但是可以通过with
语句消除掉GIL