跳转到主要内容

远程使用特性

项目描述

背景

这是一个非常粗糙的技巧,使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做同样的事情。)

无论如何,这就是这里示例背后的动机。我计划继续对这个代码进行修改,直到它在现实世界中为我工作。

快速入门

要运行演示,在一个终端中运行以下命令

# 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 (8.1 kB 查看哈希值)

上传时间

remote_traits-0.1.tar.gz (5.4 kB 查看哈希值)

上传时间

支持