最近在看廖雪峰大神的Python教程,看到一段对CPU和IO操作的描述,以及与线程的关系,觉得写得很清楚很棒,特此记录

计算密集型 vs. IO密集型

是否采用多任务(也就是多进程/线程)的第二个考虑是任务的类型。我们可以把任务分为计算密集型和IO密集型。

计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。

计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。


第二种任务的类型是IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO【博主:按照这个我理解的IO就是指把内容从硬盘上读到内存的过程,或者是从网络上接收信息到本机内存的过程】的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。

IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。

IO与CPU跟线程的关系相关推荐

  1. 线程池大小设置和CPU核心数的关系

    文章目录 1.线程池和CPU核心数的关系 2.常见概念:CPU的核心数,CPU的线程数 3.是否使用线程池就一定比使用单线程高效呢? 1.线程池和CPU核心数的关系 一般说来,大家认为线程池的大小经验 ...

  2. cpu线程_CPU核数和线程数有什么用?什么意思?CPU核数和线程的关系与区别

    我们在组装电脑选购硬件的时候,大多数的人群更在乎CPU的性能,除了考虑架构.工艺.单核性能等,还需要考虑核心和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线程数量.那么 ...

  3. CPU核数和线程数有什么作用?CPU核数和线程的关系与区别,服务器CPU与电脑主机CPU的区别

    我们在选择服务器时,CPU的性能也是咱们需要考虑的一点,除了考虑架构.工艺.单核性能等,还需要考虑核心数和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线程数量也是越来越 ...

  4. io密集服务器cpu性能,线程池中CPU密集型和IO密集型选择

    cpu密集型:cpu使用率较高(也就是一些复杂运算,逻辑处理),所以线程数一般只需要cpu核数的线程就可以了.这一类型的在开发中多出现的一些业务复杂计算和逻辑处理过程中. IO密集型:cpu使用率较低 ...

  5. IO密集型线程和CPU密集型线程

    这里写目录标题 CPU密集型 IO密集型 CPU密集型与IO密集型任务的使用说明 CPU密集型 CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作CPU读写IO( ...

  6. io密集服务器cpu性能,IO密集型和CPU密集型 线程数的计算

    CPU密集型 每一个CPU核心都参与计算,将CPU的性能充分利用起来,这样才算是没有浪费服务器配置,如果在非常好的服务器配置上还运行着单线程程序那将是多么重大的浪费.对于计算密集型的应用,完全是靠CP ...

  7. cpu的核数和进程_CPU核数和线程数有什么用?什么意思?CPU核数和线程的关系与区别...

    我们在组装电脑选购硬件的时候,大多数的人群更在乎CPU的性能,除了考虑架构.工艺.单核性能等,还需要考虑核心和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线程数量.那么 ...

  8. CPU和内存 程序(线程)关系

    先来介绍下CPU: CPU容量小 需要别人给她指令但是运转速度快 主要是寄存器构成的 1. 通过控制器从内存中读入指令和数据到寄存器中并根据结果来控制整个计算机 2. 而运算器负责运算从内存读入的寄存 ...

  9. JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程

    2019独角兽企业重金招聘Python工程师标准>>> JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程 博客分类: java jvm 前言: 上一 ...

最新文章

  1. vb 取得计算机名及目录
  2. markdown 画图
  3. ACM基础之取消cin与stdio的同步
  4. TemplateSyntaxError at XXXX或页面样式未生效
  5. WordPress电子商务博客源码
  6. python log日志_Python的log日志功能及设置方法
  7. shell脚本简单切割字符串
  8. Windows Server 2016安装SQLServer2008R2
  9. 2020中国数据智能产业图谱1.0版发布丨数据猿产业全景图
  10. 51单片机原理以及接口技术(三)-80C51的指令系统
  11. KiB、MiB与KB、MB的区别
  12. HTML实现获取验证码功能
  13. 电脑桌面出现空白图标无法删除
  14. 王之泰 201771010131《面向对象程序设计(java)》第十六周学习总结
  15. 谁是白盒网络市场最大玩家
  16. labelImg安装所遇到的那些坑
  17. 示波器测量的波形一直抖动怎么办
  18. 5.8GHz雷达感应模块应用,智能家居照明技术,微波雷达传感器
  19. comsol仿真-关于肌肤效应
  20. i春秋公益赛WriteUp-MISC套娃

热门文章

  1. 这个假期我通过【得到】得到了什么
  2. 志宇-springSecurty
  3. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-词法分析(3)【简书被冻结-搬运】
  4. win10怎样锁定计算机,win10
  5. open cv视频抽帧
  6. 林瞥网,一个关注站长导航工具网站
  7. 每日一题——小b和灯泡(数论)
  8. 老男孩培训视频听课笔记七(在51cto上听的)--5.8 64bit 基础优化
  9. matlab 正轴测图,正等轴测图的画法
  10. 关于数独游戏的实现(二)