GIL是什么
Python官方解释器(CPython解释器)在内部不是线程安全的,因此它有一个全局解释器锁(Global Interpreter Lock简称GIL),它使得在任何时刻都只有一个线程在执行Python字节码。
这也是使得标准版本的Python并不能实现真正的多线程并发的直接原因。简单来说就是,一个Python进程永远不能在同一时刻使用多个CPU核心。
In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)
GIL会带来什么
一起来看一个例子
计算耗时
然后我们count_down两次,看看耗时情况
工作很好,但是老板不高兴。他要我们加快速度。我们怎样才能更快呢?我们使用线程使这两个函数调用并行运行,可以吗?理论上,并行运行一次函数应该和运行一次一样多。因为,这两个函数调用并行运行。让我们尝试在不同线程中调用函数两次:
是GIL导致呢?
如何解决这个问题?
尝试使用multiprocessing模块
想了解更多的内容?请继续关注。