事件循环开发框架eventloop(python版)
2016-11-23 21:11
169 查看
基于不同操作系统提供的多路IO通知机制,实现了一个可以针对文件描述符或者同类结构进行事件监听开发的小型框架,基于tornado的IOLoop实现。主要结构如下:
据此分别实现了三种不同的方式:
每个Loop实例维护三类不同的handler列表,分别为
- poll handler:发生某个事件后调用
- pure handler:无条件调用
- periodic handler:按照一定时间间隔周期性调用
每个handler都有一个
详细代码见github:https://github.com/OshynSong/eventloop
LoopImpl类
依据不同操作系统,按照epoll的接口实现了统一的loop注册方式:class LoopImpl(object): """ Base class for concrete implementations of event loop class """ def __init__(self): pass def close(self): raise NotImplementedError() def register(self, fd, event_type): raise NotImplementedError() def unregister(self, fd): raise NotImplementedError() def modify(self, fd): raise NotImplementedError() def pool(self, timeout): """ Pool the ready event """ raise NotImplementedError()
据此分别实现了三种不同的方式:
class EpollLoop(LoopImpl) class KQueueLoop(LoopImpl) class SelectLoop(LoopImpl)
Loop类
提供统一的静态方法返回唯一实例,选取LoopImpl方式时依据当前系统支持的最优方式进行,优先选择epoll,其次为kqueue,select方式作为最终的补充。...... if hasattr(select, 'epoll'): self._impl = EpollLoop() model = 'epoll' elif hasattr(select, 'kqueue'): self._impl = KQueueLoop() model = 'kqueue' elif hasattr(select, 'select'): self._impl = SelectLoop() model = 'select' else: raise Exception('can not find any async event stratege') ......
每个Loop实例维护三类不同的handler列表,分别为
- poll handler:发生某个事件后调用
- pure handler:无条件调用
- periodic handler:按照一定时间间隔周期性调用
每个handler都有一个
_LoopHandler类的对象相对应。每一类handler都可以动态添加(add接口)和删除(remove接口)。最终Loop类使用start接口开始整个handler的处理循环。
详细代码见github:https://github.com/OshynSong/eventloop
相关文章推荐
- 玩聚网目前也是基于Python的Django框架开发
- 玩聚网目前也是基于Python的Django框架开发
- python下的web开发框架-Django,建立模型
- python的各种GUI开发框架介绍
- Python微型web开发框架Flask v0.5.1
- [转]Django 是一个 Python 下的 web 开发框架[学习资料]
- 用 Python 开发 Web 站点的两个开源框架 Django 和 TurboGears
- python下的web开发框架-Django,django模板的使用
- “软芯片”畅想-基于Python的应用软件开发框架Softchip(一)
- 关于Python的WEB开发框架的介绍
- 玩聚网目前也是基于Python的Django框架开发
- 玩聚网目前也是基于Python的Django框架开发
- 探讨与比较Java和.NET的事件处理框架-Java基础-Java-编程开发
- python下的web开发框架-Django,url配置
- 【Python开发web】(1) -- 系统环境与框架的选择
- 玩聚网目前也是基于Python的Django框架开发
- 玩聚网目前也是基于Python的Django框架开发
- [Web开发] 6款著名的开源的Web开发框架横向评测 (Perl, PHP, Python, Ruby)
- Javascript循环绑定事件 web前端开发博客:http://www.css88.com/
- Python Web开发框架[转]