小总结I/O 多路复用的特点:
通过一种机制使一个进程能同时等待多个文件描述符 , 而这些文件描述符(套接字描述符)其中的任意一个进入读就绪状态 , epoll()函数就可以返回 。所以, IO多路复用 , 本质上不会有并发的功能 , 因为任何时候还是只有一个进程或线程进行工作 , 它之所以能提高效率是因为selectepoll 把进来的socket放到他们的 ‘监视’ 列表里面 , 当任何socket有可读可写数据立马处理 , 那如果selectepoll 手里同时检测着很多socket , 一有动静马上返回给进程处理 , 总比一个一个socket过来,阻塞等待,处理高效率 。
当然也可以多线程/多进程方式 , 一个连接过来开一个进程/线程处理 , 这样消耗的内存和进程切换页会耗掉更多的系统资源 。所以我们可以结合IO多路复用和多进程/多线程 来高性能并发 , IO复用负责提高接受socket的通知效率 , 收到请求后 , 交给进程池/线程池来处理逻辑 。
推荐阅读
- WEB 应用防火墙 的天问
- 手机如何设置静态IP地址?很简单,只需这样操作
- Nginx 静态文件服务配置及优化
- Python Django框架
- Centos7环境下快速安装Pyspider WEB爬虫框架和phantomjs浏览器
- Web实现前后端分离解析
- Python网络爬虫之URL去重方法:本地内存,Redis,布隆过滤器
- python 进程、线程、协程对比
- python:教你用爬虫通过代理自动刷网页的浏览量
- python正则表达式re模块的高级用法