0

我正在寻找一种在 python 脚本的两个进程之间安全传递信息(!)的方法。

一个进程只读,另一个只写。我需要传递的数据是一个字典。

到目前为止,我发现的最佳解决方案是本地 SQL 服务器(因为数据本身就是一种表),我假设 SQLite 将安全地处理事务。

有没有更好的方法,也许是一个模块来锁定文件在写入时被读取,反之亦然?

我使用的是 linux ubuntu 11.10,但欢迎使用跨平台解决方案。

4

2 回答 2

3

要在进程之间传输数据,可以使用管道套接字。Python 使用酸洗在对象和字节流之间进行转换。

为了安全地传输数据,您需要确保数据只传输一次。这意味着:目标进程需要能够说“我没有收到所有内容,请再次发送”,而发送者需要某种形式的收据。

为此,您应该在数据中添加一个“标题”,为其提供唯一键(可能是时间戳或哈希)。然后,接收者和发送者都可以保留他们已经发送/看到的列表,以避免两次处理数据。

于 2012-09-10T07:17:50.210 回答
1

对于单向通信,您可以使用例如multiprocessing.Queuemultiprocessing.queues.SimpleQueue

共享内存也是使用multiprocessing.Array. 但是您必须将字典分成至少两个数组(键和值)。只有当所有值都是相同的基本类型时,这才会有效。

两者的优点multiprocessing.Queue在于multiprocessing.Array它们都在内部受到锁的保护,因此您不必担心。

于 2012-09-10T19:01:37.120 回答