python--selectors模块
它的功能与linux的epoll,还是select模块,poll等类似;实现高效的I/O multiplexing, 常用于非阻塞的socket的编程中; 简单介绍一下这个模块,更多内容查看 python文档:https://docs.python.org/3/library/selectors.html
1. 模块定义了一个 BaseSelector的抽象基类, 以及它的子类,包括:SelectSelector, PollSelector, EpollSelector, DevpollSelector, KqueueSelector.
另外还有一个DefaultSelector类,它其实是以上其中一个子类的别名而已,它自动选择为当前环境中最有效的Selector,所以平时用 DefaultSelector类就可以了,其它用不着。
2. 模块定义了两个常量,用于描述 event Mask
EVENT_READ : 表示可读的; 它的值其实是1;
EVENT_WRITE: 表示可写的; 它的值其实是2;
3. 模块定义了一个 SelectorKey类, 一般用这个类的实例 来描述一个已经注册的文件对象的状态, 这个类的几个属性常用到:
fileobj: 表示已经注册的文件对象;
fd: 表示文件对象的描述符,是一个整数,它是文件对象的 fileno()方法的返回值;
events: 表示注册一个文件对象时,我们等待的events, 即上面的event Mask, 是可读呢还是可写呢!!
data: 表示注册一个文件对象是邦定的data;
4. 最后说说抽象基类中的方法;
register(fileobj, events, data=None)
作用:注册一个文件对象。
参数: fileobj——即可以是fd 也可以是一个拥有fileno()方法的对象;
events——上面的event Mask 常量; data
返回值: 一个SelectorKey类的实例;
unregister(fileobj)
作用: 注销一个已经注册过的文件对象;
返回值:一个SelectorKey类的实例;
modify(fileobj, events, data=None)
作用:用于修改一个注册过的文件对象,比如从监听可读变为监听可写;它其实就是register() 后再跟unregister(), 但是使用modify( ) 更高效;
返回值:一个SelectorKey类的实例;
select(timeout=None)
作用: 用于选择满足我们监听的event的文件对象;
返回值: 是一个(key, events)的元组, 其中key是一个SelectorKey类的实例, 而events 就是 event Mask(EVENT_READ或EVENT_WRITE,或者二者的组合)
close
()作用:关闭 selector。 最后一定要记得调用它, 要确保所有的资源被释放;
get_key(fileobj)
作用: 返回注册文件对象的 key;
返回值 :一个SelectorKey类的实例;
最新文章
- [NHibernate]利用LINQPad查看NHibernate生成SQL语句
- 【&;】位与运算符【|】位或运算符之权限控制算法
- 【iOS】网络编程:上传图片到服务器
- js获取当前域名及获取页面完整地址并做判断
- 0512 Scrum 4.0
- MyBatis学习总结(六)——调用存储过程
- 【C#】1.算法温故而知新 - 简单的桶排序
- 三种实例化bean的方式
- Delphi XE2及以后的版本编译后的程序大小问题
- 离散傅立叶变换与快速傅立叶变换(DFT与FFT)
- 让你提前认识软件开发(17):makefile文件的书写及应用
- Java 集合 HashMap &; HashSet 拾遗
- Nodejs(pkg方式安装)卸载 及命令行模式的重新安装
- (办公)springboot配置全局异常
- CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.1
- easyui系列一 下拉框之组合框combobox
- Dockerfile技巧
- Delphi中COM自动化对象中使用事件
- Teacher Bo (时间复杂度 + 暴力)
- 【JAVA】内部类,内部接口
热门文章
- 3-3 zookeeper的作用体现
- 1-1+zookeeper简介
- js面试题知识点全解(一作用域)
- Java3D读取3DMax模型并实现鼠标拖拽、旋转、滚轮缩放等功能
- Struts第三天
- Python 网络爬虫 005 (编程) 如何编写一个可以 下载(或叫:爬取)一个网页 的网络爬虫
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-002插入排序法(Insertion sort)
- 用递归算法返回该元素id下面的所有子集id
- 识别子串 (string)——后缀自动机+线段树
- Q的进阶用法