Python GIL的问题

2016-11-20
喝牛奶的鸵鸟

python的GIL问题导致python同时只能解释一个线程,下面举例说明:

多进程测试:

运行结果如下,可以看到有两个核跑满了: gil_01

多线程测试:

运行结果如下,可以看到没有一个核跑满,只是切换线程执行: gil_02

解决方法:

由于GIL的存在,不能同时解释多个线程,那么可以让python解释器解释主线程,别的线程可以是静态编译型语言编译后的动态链接库,这样就可以充分利用多核了。

运行结果如下,此时可以发现多线程和多进程一样有两个核跑满了: gil_03