对CPU密集型计算和IO密集型运算,应该选择多进程还是多线程?

Python的多线程由于GIL限制,在CPU密集型任务中效率不高,更适合IO密集型任务,因为线程在等待IO时可以切换,提高资源利用率。而CPU密集型任务需要多进程来利用多核CPU资源,虽然进程切换成本高,但能确保计算效率。
摘要由CSDN通过智能技术生成

 

最近在看python多线程部分,看了一些资料说对于Python如果是CPU密集型应该用多进程模型,如果是IO密集型应该用多线程模型。后者可以理解。但是,为什么CPU密集型的要用多进程呢?不是进程占用的资源很多,进程切换就占用很多CPU资源,这样合理吗?

Neo Ko

12 人赞同了该回答

Python,特指CPython的实现,由于GIL的存在,CPython不能有效的利用多核处理器。表现为任意时间一个进程只有一个线程在跑,而IO密集型运算,多数是在IO读写将线程堵塞掉了,这个时候线程切换是很合理的,反正线程只是单纯地等待,在这个等待的时候去做其他的事情,资源利用率就上去了。

发布于 2015-04-27

​赞同 12​​添加评论

​分享

​收藏​喜欢

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值