我是 Python 新手。只是想知道python中有没有类似于ruby的drb的模块?像客户端可以使用drb服务器提供的对象吗?
6 回答
Pyro做了我认为你在描述的事情(尽管我没有使用过 drb)。
从网站:
Pyro 是 PYthon 远程对象的缩写。它是一个完全用 Python 编写的先进而强大的分布式对象技术系统,旨在非常易于使用。再也不用担心编写网络通信代码了,使用 Pyro 时,您只需像往常一样编写 Python 对象。只需几行额外代码,一旦您将对象拆分到网络上的不同机器上,Pyro 就可以处理对象之间的网络通信。所有血腥的套接字编程细节都得到了处理,您只需调用远程对象上的方法,就好像它是本地对象一样!
标准的多处理模块可能会做你想做的事。
我不知道 drb 是什么,但从您提供的少量信息来看,它可能类似于Twisted 中的 Perspective Broker
介绍
假设您发现自己控制着线路的两端:您有两个需要相互通信的程序,并且您可以使用任何您想要的协议。如果您可以根据需要相互调用方法的对象来考虑您的问题,那么您很有可能可以使用 twisted 的 Perspective Broker 协议,而不是试图将您的需求硬塞到 HTTP 之类的东西中,或者实现另一个 RPC机制。
Perspective Broker 系统(缩写为 PB,产生了许多与三明治相关的双关语)基于几个核心概念:
序列化:获取相当任意的对象和类型,将它们转换为一大块字节,通过线路发送它们,然后在另一端重构它们。通过仔细跟踪对象 ID,序列化对象可以包含对其他对象的引用,并且远程副本仍然有用。
远程方法调用:对本地对象执行某些操作并导致方法在远程对象上运行。本地对象称为 RemoteReference,您可以通过运行它的 .callRemote 方法来做一些事情。
你看过 execnet 吗?
对于并行处理和分布式计算,我使用并行 python。