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

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

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

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

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

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

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

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

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

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

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

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

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

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

    GIL并运行。

  • 相关阅读:
    使用srvany.exe将任何程序作为Windows服务运行
    instsrv.exe用法
    在博客园中发现的一篇文章,感觉这些内容就是我心中所想表达的!
    HTML5的Video标签的属性,方法和事件汇总
    使用nodejs 来压缩整个目录
    git 基础
    mac 上安装 redis
    第12次实验总结
    第12次实验作业
    第十一次实验总结
  • 原文地址:https://www.cnblogs.com/geeklove01/p/8213863.html
Copyright © 2011-2022 走看看