Python Web静态服务器-epoll( 二 )

小总结I/O 多路复用的特点:
通过一种机制使一个进程能同时等待多个文件描述符 , 而这些文件描述符(套接字描述符)其中的任意一个进入读就绪状态 , epoll()函数就可以返回 。所以, IO多路复用 , 本质上不会有并发的功能 , 因为任何时候还是只有一个进程或线程进行工作 , 它之所以能提高效率是因为selectepoll 把进来的socket放到他们的 ‘监视’ 列表里面 , 当任何socket有可读可写数据立马处理 , 那如果selectepoll 手里同时检测着很多socket ,  一有动静马上返回给进程处理 , 总比一个一个socket过来,阻塞等待,处理高效率 。
当然也可以多线程/多进程方式 , 一个连接过来开一个进程/线程处理 , 这样消耗的内存和进程切换页会耗掉更多的系统资源 。所以我们可以结合IO多路复用和多进程/多线程 来高性能并发 , IO复用负责提高接受socket的通知效率 , 收到请求后 , 交给进程池/线程池来处理逻辑 。




推荐阅读