Python的GIL锁
python GIL锁
C语言写的python解释器中存在全局解释器锁,由于全局解释器锁的存在,在同一时间内,python解释器只能运行一个线程的代码,这大大影响了python多线程的性能。(python注重的是安全性)
-
多线程 ,在多线程的情况下,只有当线程获得了一个全局锁的时候,那么该线程的代码才能运行,而全局锁只有一个,所以使用python多线程,在同一时刻也只有一个线程在运行,因此在即使在多核的情况下也只能发挥出单核的性能。故,多线程是单核运行的
-
有了GIL为什么还需要线程锁:GIL锁的是解释器,控制CPU,也就是说,锁的是一个线程,同一时刻只能有一个线程利用CPU,线程锁锁的是某一段代码只有一个线程进入执行这个代码(在GIL锁的时候,也可能会有多个线程在同时运行某段代码,因为那段代码不一定再利用CPU)