python中一读一写进程间的通信

2024-05-13 12:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

到目前为止,我找到的最佳解决方案是本地SQL server(因为数据本身就是一种表),我假设SQLite将安全地处理事务。你知道吗

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

我使用的是linux Ubuntu11.10,但欢迎使用跨平台解决方案。你知道吗


Tags: 模块文件数据方法脚本sqlitesql字典
2条回答

要在进程之间传输数据,可以使用pipessockets。Python使用pickling在对象和字节流之间进行转换。你知道吗

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

要实现这一点,您应该向数据中添加一个“头”,为其提供一个唯一的键(可能是时间戳或散列)。然后,接收方和发送方都可以保留一个他们已经发送/看到的列表,以避免对数据进行两次处理。你知道吗

对于单向通信,可以使用^{}multiprocessing.queues.SimpleQueue。你知道吗

共享内存也是一个使用multiprocessing.Array的选项。但您必须将字典至少拆分为两个数组(键和值)。只有当所有值都是相同的基本类型时,这种方法才能很好地工作。你知道吗

关于multiprocessing.Queuemultiprocessing.Array的优点是它们都受到内部锁的保护,因此您不必担心这一点。你知道吗

相关问题 更多 >