IO密集型程序
  在程序执行过程中存在大量IO操作,而CPU操作较少,消耗CPU较少,运行效率较低
CPU(计算)密集型程序
  在程序执行中,CPU运算较多,IO操作相对较少(消耗CPU大,运行速度快)
IO分类: 阻塞IO     
       阻塞情况: 是IO的默认形态,是效率较低的一种IO情形
          1  因为某种条件没有达成造成的阻塞
              accept input recv
          2 处理 IO端数据传输时间较长形成的阻塞
              网络传输过程,文件读写过程
     非阻塞IO : 通过IO事件的属性,使其变成非阻塞状态,(让一些条件阻塞函数不再阻塞)
        非阻塞IO往往和循环判断一起使用
        s.setblocking(False)
          将套接字设置为非阻塞状态(默认为阻塞状态)
        超时检测: 将原本阻塞函数,设置一个最长阻塞时间,如果条件时间内达成则正常运行,如果仍然阻塞则被视为超时,继续向下运行或产生异常
        s.settimeout(sec)  设置套接字超时时间
      
     IO多路复用 :同时监控多个IO事件,当哪个IO事件准备就绪,就执行哪个IO事件,以此形成可以同时操作多个IO的并发行为,避免一个IO阻塞,造成所有IO都无法执行
        IO准备就绪:是一种IO必然发生的临界状态
        IO多路复用的编程实现:
            1 将IO设置成为关注IO
            2 将关注IO提交给内核监视
            3 处理内核给我们反馈的准备就绪的IO
        具体:select --> windows linux unix
           poll  -->linux unix
           epoll  -->linux unix
    select 模块:
        import select 
          rs,ws,xs = select(rlist,wlist,xlist[,timeout])
          功能: 监控IO事件,阻塞等待IO事件发生
        参数:
          rlist :列表, 存放我们监控等待处理的IO事件
          wlist :列表,存放我们要主动操作的IO事件
          xlist :列表: 我们要关注出错处理的IO事件
          timeout: 超时时间
        返回值 :
          rs 列表 rlist中准备就绪的IO
          ws 列表 wlist中准备就绪的IO
          xs 列表 xlist中准备就绪的IO
        注意:
          1 wlist中如果有IO事件则select立即返回到ws
          2 在处理IO过程中不要处理一个客户端长期占有服务端,使服务端无法运行到select 的情况
          3 IO多路复用占用计算机资源少,IO效率高
    POLL 
      1 创建POLL对象 
原文:https://www.cnblogs.com/Skyda/p/9606547.html