任务框架

pyworks的Python项目详细描述


pyworks是python的一个小型并发框架,自从15年前我第一次在java中使用线程以来,我就一直在使用这个概念。在那之前,我习惯了c语言和一个叫做daros的国产“os”。它有任务“抢占进程”、消息和队列。对我来说,理解one task==one thread的概念要容易得多。
没有synchronized关键字,唯一需要注意的地方是如果
使用了共享内存(这很少见)

也称为任务模式。从那时起,我们在世界各地实施了许多大型项目。这个概念对于开发人员来说很容易理解,而且通常执行得非常好。


前几天晚上,我决定尝试在
python中实现我的coworks版本。受donovan preston(@donovanpreston)在pycon 2010上关于他在python中实现task的演讲的启发,我决定自己试试。

pyworks实现了两种并发类:actor和task。actor
是一个简单的并发类,task是actor的一种特殊形式。actor
有几个简单的方法:actor、timeout、notify和observe。任务更复杂,支持受控启动顺序的状态模式和方法,
配置等。

任务的子类在它们自己的线程中运行。
任务可以通过调用self.actor(“someactor”)来获取该任务的代理。您可以调用其他任务的所有方法。方法
在队列中发送,并在另一个任务的线程中执行。

侦听器必须实现正在侦听的任务的所有输出方法。


每个任务都有一个状态(默认为self),该状态处理所有传入的
方法。这意味着任务中的状态非常容易实现。


没有任何思想或时间投入到性能中,这只是一项研究



只需执行以下操作即可运行测试程序:
$python pywork.py--run


works on python3


rene nejsum
rene@pylots.com









欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java prometheus占用JDBC连接   java如何在ApacheDerby中选择聚合的学生/班级数据?   Java支持内部/本地/子方法吗?   java如何向Jsoup添加带有用户名和密码的代理?   servlets介绍如何创建java。木卫一。具有URI的文件对象?   java使用布尔值设置实体的字符串字段?   java API请求:无法从Android Studio工作   java无法从URL捕获JSON响应   Java中的amazon web服务AWS DynamoDB和MapReduce   为重载方法强制转换Java任务   JavaSolr+SpringRoo为每个客户提供单独的索引   父对象的java调用方法,即使子对象重写它?