zoukankan      html  css  js  c++  java
  • 线程池与Python中的GIL

    线程池是一个操作系统的概念,它是对多线程的一种优化

    多线程的时候,创建和销毁线程伴随着操作系统的开销,如果频繁创建/销毁线程,则会使效率大大降低。

    而线程池,是先创建出一批线程放入池子里,需要创建线程的时候从这个池子里取,用过了再放这个池子里。

    显然,使用线程池节省的是线程创建和销毁的时间。

    因为创建出的线程要放在内存中某处,所以这是一种用空间换时间的做法。

    使用线程池还有一个好处,那就是它限制了多线程的数量。

    线程池里有多少线程可以人为指定。

    加入不使用线程池,那么如果一下子创建了很多线程,线程之间的调度会浪费很多时间。

    线程池限制了多线程情形下线程数量,通过减少多线程,提升执行效率。

    在Python中,由于有一个GIL(Global Interpreter Lock)锁,任何Python线程执行之前,都要先获得GIL锁。

    每执行100条字节码,解释器自动释放GIL锁,让别的线程有机会在同一个CPU上执行。

    所以从表面上来看,由于GIL的存在,Python中的多线程似乎作用不大。

    实际上还是有点作用的,对于IO密集型任务,当一个需要等待较长时间的时候,会让出GIL,以便其他线程可以获取

    GIL并运行。

  • 相关阅读:
    浅谈prufer编码
    数据结构训练之三
    博弈论训练之一
    动态规划训练之十三
    杂题训练之七
    奇技淫巧训练之八
    浅谈博弈论
    浅谈卡特兰数
    奇技淫巧训练之七
    浅谈概率期望的一些例题
  • 原文地址:https://www.cnblogs.com/geeklove01/p/8213863.html
Copyright © 2011-2022 走看看