我有两个程序必须相互通信。他们应该共享状态(变量,文件-我不知道如何实现这一点)。一个程序应该读取它并对变化做出反应——另一个程序应该写入这个全局状态。
将文件用于此目的甚至不慢,很难读取有人同时写入的文件。
实现程序间共享状态的最佳方法是什么?(寻找跨平台解决方案)
保持两个进程同步状态的正常方法是使用IPC(进程间通信)。但是IPC可能在这里不起作用,如果你说的"跨平台"是指让Linux上的python应用程序与Windows上的本地Windows应用程序保持同步。在这种情况下,你基本上只能使用REST使用HTTP来提供Json, XML等。
将状态写入网络可访问的临时文件会产生各种各样的问题。更好的做法是让一个进程充当"服务器",向"客户端"进程提供状态。当客户端想要更新其状态时,它会向服务器请求当时的最新状态。服务器使用包含最新状态的Json或等效对象进行响应。事务是离散的。当另一个进程正在写入文件时,没有机会尝试读取文件,或者读取过期的文件。
实现此目的的一个想法是将数据(变量,状态等)导出到json文件中,并将其存储在临时文件中。一旦你完成了这些,你就可以用第二个程序读取第一个程序生成的json文件并解析它,这样你就可以将这些变量分配给第二个程序。
如果你在网络中使用这些程序,那么我建议使用REST。
XML和Json是跨平台交换信息的格式。您必须确保在两个程序中都有Json解析器。