有一些我需要在同一台机器上的两个 python 进程之间共享的对象,我使用 python memcached 在一个进程中存储对象并在另一个进程中使用它们。然而,即使它们可以在想要使用它们的进程中检索到,调用它们的方法也不会返回任何结果(不是预期的结果)。
如果有人提供必要的输入,在这样描述的场景中会发生什么 - 对象是否完全通过并且两个进程共享它的状态? ,或者只传递一个副本,并且一个进程所做的更改在另一个进程中不可见 - 可以采用哪些其他技术/库来实现 python 进程之间的共享对象。
谢谢
最佳答案
Memcached 存储字符串值而不是您描述的丰富对象。
您所描述的听起来像是发布者-订阅者应用程序 - 一个进程生成数据,另一个进程对其执行操作。
Memcached 不是发布/订阅的正确工具。您需要一个可以自动添加和弹出的列表。虽然您可以在 Memcached 中存储列表的字符串表示形式,但您不能在进程之间自动添加和删除此列表中的元素。
看看Redis .它具有丰富的数据结构,非常适合发布/订阅和成熟 Python clients使用。
对于一个简单的实现,您可以让您的一个进程将 ( LPUSH) 数据添加到列表中。另一个进程可以从该列表中弹出(RPOP)数据并对其运行一个方法。这将为您提供一个可扩展的良好 IPC 队列。
如果您需要更复杂的功能,请查看 Redis pub/sub docs - 它有一个消息传递系统,无需为新值轮询队列。
关于python - 调用从 Memcached 检索到的对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951606/