在解释器间传递Python对象

4 投票
2 回答
618 浏览
提问于 2025-04-16 16:01

我想在两个Python解释器之间交换对象,这些解释器可以在同一台机器上,也可以在不同的机器上运行。

有没有什么方法可以做到这一点呢?

~Vijay

具体来说: 我有几个进程在同一台(或不同的)机器上运行。其中一些进程会生成对象,而其他进程会使用这些对象。我正在尝试解决这些进程之间的生产者/消费者问题。

之前我是在同一个Python解释器中以线程的方式运行这些进程,能够使用队列来解决生产者-消费者问题。但是由于负载增加,我决定将一些进程转移到其他机器上。现在,这些在不同机器(和解释器)上的进程需要共享对一个队列的访问。我想知道有没有什么高效的方法可以做到这一点。

我可以写一个类来管理这个队列,并通过套接字处理与其他进程之间的对象传输。

我觉得如果有人想用Python处理大量数据,这应该是一个常见的问题。因此,我想知道是否还有其他更优雅的解决方案。

~Vijay

2 个回答

5

使用Python的pickle模块来保存和读取对象的状态:

http://docs.python.org/library/pickle.html

4

一般来说,你需要对对象进行序列化。在Python中,这意味着要使用“pickle”和“unpickle”。你可以在一边把一个对象进行序列化,然后通过某种方式(比如网络连接)传输到另一边,再进行反序列化。可以使用 picklecPickle 模块来实现这个过程。

Pyro 是一个完整的工具包,可以以透明的方式完成这个操作。

撰写回答