zoukankan      html  css  js  c++  java
  • python中的GIL

    我们通常使用的python解释器均为CPython,当年python的创始人在设计这门语言时,在解释器中加入了一个叫做“全局解释器锁”(global interpreter lock)的东西。因为GIL的存在,python在运行多线程程序时并不是真正意义上的多线程。

    CPython解释器在执行代码时,每一个python线程执行前都必须获得GIL锁,然后每执行一段时间,解释器会自动释放GIL锁,让别的线程有机会执行。因此,多线程在python中并不是并行执行,而是交替执行的,每个时刻仅有获取GIL锁的线程在执行。即便你的电脑有4核,有4个线程,也只会用到1个核来执行。

    GIL是加在每个进程上的,如果我们想在python程序中利用多核,可以采用多进程的方法。

    在处理计算密集型的任务时,你会发现在python中串行的执行效率要高于并行。对于某些计算密集型任务,不推荐使用python语言去处理。python更擅长处理IO密集型任务。

  • 相关阅读:
    第二阶段冲刺6
    第二阶段冲刺5
    第二阶段冲刺4
    第二阶段冲刺3
    暑假学习进度七
    暑假学习进度六
    暑假学习进度五
    暑假学习进度四
    暑假学习进度三
    暑假学习进度二
  • 原文地址:https://www.cnblogs.com/guyexiangyun/p/10583004.html
Copyright © 2011-2022 走看看