远程使用特性
项目描述
背景
这是一个非常粗糙的技巧,使Enthought的Traits能在多进程环境中工作。假设有一个名为Alice的进程,它有一个名为camera的变量,该变量是HasTraits(其子类)的实例。现在,如果另一个名为Bob的进程想要在camera.shutter发生变化时被通知,这应该通过正常的Traits机制来实现。此外,如果Bob想要更改Alice的camera.shutter设置,Alice应该被通知这些更改。
在enthought-dev电子邮件列表上关于这个主题有一些讨论,Robert Kern的想法是使用Python 2.6的多进程模块创建HasTraits子类的代理对象,这些对象将透明地执行此操作。我怀疑这种方法会非常优雅,但超出了我一天的能力,而且我有一个代码必须完成的截止日期。
因此,我创建了一个技巧:Alice和Bob进程都有camera实例的完整副本,彼此镜像。在我的实际应用中,Alice的camera实例将连接到实际做某事的东西,比如用真正的相机拍照,而Bob的camera实例将连接到远程计算机上的GUI。两个进程之间的同步使用Pyro(Python远程对象)来完成。(可能可以通过使用multiprocess来替代对Pyro的依赖,但我已经熟悉Pyro,并且无法立即想出如何使用multiprocess做同样的事情。)
无论如何,这就是这里示例背后的动机。我计划继续对这个代码进行修改,直到它在现实世界中为我工作。
Andrew Straw <strawman@astraw.com>
快速入门
要运行演示,在一个终端中运行以下命令
# Start the "do" program -- Alice in the motivation above python wx_demo.py do
在另一个终端中运行以下命令
# Start the "view" program -- Bob in the motivation above python wx_demo.py view
许可证
此代码使用MIT许可证(请参阅源代码以获取完整许可证)。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
remote_traits-0.1.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 057a395ad3549acbf56b13b5b609d528ff26c910caf47fe462a98875cd1bf72c |
|
MD5 | b8cc150206f898ad9d5de20279cf6c53 |
|
BLAKE2b-256 | 709bdeac11b1c877339e7740acfa4f51da1e05b30fd426217ba13bf938cd73c9 |
remote_traits-0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 03888853b7e8022d27602f0c640216895c8e39d3c721268442f6ad8bab513846 |
|
MD5 | c22654806203b4554a465d8f46322e0c |
|
BLAKE2b-256 | 12f9293eb1b2fab714377b1db2520467fc8e91a9b7bfe86dd985c759497415df |