为什么说python多线程是鸡肋。有一个很重要的原因是:python无法发挥多核cpu的性能优势。
对于后面的说法(即:python无法发挥多核cpu的性能优势),我是赞同的。但因此得出结论:python多线程是鸡肋却还有待商榷。
首先我们要知道为什么python无法发挥多核cpu的性能优势?因为python(这里指cpython)有一个叫做GIL的东西,名叫全局解释器锁。它是在解释器层面添加了一个锁,好处就是在一定程度上保证了线程的安全,但带来的影响就是哪怕你cpu再多,资源再丰富,同一时间解释器也只能运行一个线程。
但是我们的程序一般分为两种,cpu密集型和io密集型。
常见的cpu密集型一般和各种计算有关,比如视频解码。
常见的io密集型有数据库操作,文件读写
有必要强调一点,我认为,io密集型不是说反复的去读写文件。而是指在一段时间内,程序运行的大部分时间段是用在io操作上
对于cpu密集型程序来说,python确实没有太好的办法。原因如上,GIL的存在显示了cpu的发挥
但是对于io密集型程序来说,python还是有一定意义的,因为io密集型程序,比如在文件读写过程其实有一部分时间是要用来等待的,那这部分等待时间就可以用来执行其他io操作。这也可以提升io程序执行效率
python的多线程是不是鸡肋?
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这...
- 转载自 http://bbs.51cto.com/thread-1349105-1.html参考:Python多线...
- Python多线程的一些理解: 1.多线程采用的是分时复用技术,即不存在真正的多线程,cpu做的事是快速地切换线程...