【问题标题】:How to share a dict among separate python processes?如何在不同的 python 进程之间共享一个字典?
【发布时间】:2016-11-20 07:20:30
【问题描述】:

我有两个独立的 python 进程在 linux 服务器上运行,p1 和 p2,如何从 p2 读取 p1 的字典?

两个进程是独立的,所以我不能使用基于多处理的方法,并且由于性能慢,我不想使用套接字通信或基于文件的方法。 我的python版本是3.5.1

【问题讨论】:

  • 通过两个单独的进程,您的意思是不同的两个控制台正在工作,或者一个控制台中有两个 python 脚本?如果是第一个,除了套接字数据传输,我没有看到其他选项,如果是第二个,您可以将字典存储在脚本所在的文件夹中(可能作为文本文件),然后从另一个中读取脚本。
  • “如何在不同的 python 进程之间共享 [...]” — “这与多处理无关”。我很困惑。
  • 我更新了我的问题,问题的答案/1268252/解释了为什么我们不能这样做,但我想知道的是如何做到这一点。
  • @spectras ,多处理是关于分叉进程,我的问题是关于独立进程。

标签: python python-3.x dictionary memory


【解决方案1】:

我认为这样做的唯一方法是使用 IPC。您可以使用套接字、PIPES 来做到这一点。对于所有这些方法,您必须使用 pickle 或 json 序列化它们。如果字典很大,可能需要几秒钟。

如果您不想这样做,您应该拥有某种共享内存。 Multiprocessing 允许这样做,但仅限于基本数据类型。

【讨论】:

  • 我刚刚更新了我的问题,两个进程是独立的,所以我不能使用基于多处理的方法,并且由于性能慢,我不想使用套接字通信或基于文件的方法。
  • 几周前我遇到了这个问题。这样做的唯一方法是通过共享内存,但是我没有找到任何字典。
  • 共享内存只能在fork进程之间使用,独立进程之间如何使用?
猜你喜欢
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多