Python 有GIL锁,所以它的多线程实际上是单线程
GIL 全称全局解释器锁(Global Interpreter Lock), 它锁的解释器,而不是Python代码,它防止多线程同时执行Python的字节码, 防止多线程同时访问Python的对象
Python的解释器通过切换线程的方式来模拟多线程并发的情况
那岂不是说Python多线程不会提高效率了???
非也!!!
对于IO密集型工作,多线程可以大幅度提高效率,而对于CPU密集型工作,多线程是没用的.
- IO密集型
涉及到网络,磁盘IO,硬盘读写等都是IO密集型工作,这类任务对CPU的消耗较少,大部分时间不是花在代码上,而是其他操作上 - CPU密集型
特点是进行大量的计算,消耗CPU资源, 比如我们常见的排序算法,对视频的解码之类的,大部分时间花在代码上
最后:
- CPU密集型程序适合用C等编译型语言开发的多线程, 而IO密集型程序适合Python等脚本语言开发的多线程
- 在使用多线程的时候,多线程爬取比单线程性能有提升,因为遇到IO阻塞会自动释放GIL锁,类似于协程.
- 在处理像科学计算 这类需要持续使用cpu的任务的时候 单线程会比多线程快
- 在 处理像IO操作等可能引起阻塞的这类任务的时候 多线程会比单线程
来源:CSDN
作者:print('hello world')
链接:https://blog.csdn.net/weixin_44898301/article/details/104038067