任务框架

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什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类