多进程与多线程及python编程选择

在对python的多线程与多进程讨论之前,我先提出一个论点,即一个矛盾点,使用python编程,不论你选择多线程还是多进程都是不合适的,当然,此处的“不合适”也公限于相对而言

因为本文有多处引用这位老兄的文档,所以我在这先把他的文章链接给出: https://blog.csdn.net/youanyyou/article/details/78990156   而且先明白一个真理,也是一个常识,CPU的处理速度比I/O的处理速度快的多的多,不是同一个数量级的

1、什么是CPU密集型?多进程为什么适合于用于CPU密集型程序?python的多进程局限性?

    先来回答第一个问题:

           我觉得这是很通俗易懂了  “CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。

        我再稍作重点解释,1)CPU 负载达到 100%,2)I/O操作时间短,

       有的人会问  CPU负载到 100%是不是就是满载了,不能再高了,答案:不是, 其实这个负载100%其实也是相对的,在1分钟内是100%,在2分钟内可能就不是100%了,后面的计算程序还可以排队,这里的就是CPU没有空闲的意思

       I/O操作时间短,打一个比喻,一个文件出数据库取出,非常快,但是这些数据要计算啊!到了CPU这儿,就卡住了,因为一看,前面还有文件在排队,还是排着吧!

    第二个问题:

        经过前面的解释,我相信你看到这儿已经明白为什么多进程适合于CPU密集型,当然如果你还不明白,可能需要一个提示,什么是进程,什么是多进程,计算机资源分配就是以进程为单元,如果单个数据计算都完不成,那还需要任务干吗?再多的任务也要等待

    第三个问题:

     python 多进程的局限性,作为一个以python为主要工作语言的我不得不承认,也正是由于这个特点,导致了这个局限性,python 慢,本来就是为了处理一个计算性的程序,要求的就是快,但使用这么慢的语言,确实是一个鸡肋,为什么是鸡肋呢,python编程快啊!

 

2、什么是i/o密集型?多线程为什么适合于用于i/o密集型程序?python的多线程局限性?

      如果一个程序执行主要是依靠网络、磁盘开销,而没有过多的计算,则是I/O密集型,

     由于CPU的速度远大于i/o操作的速度,线程的操作实际是一个计算过程,即同一个CPU中进行的,所以这个操作适合于线程,

    python的多线程由于GIL(全局解释性锁)的存在,其实是在一个线程中执行的,只不过是CPU的切换速度非常快,所以可默认为是多线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值