模块之间的信令

时间:2017-09-05 03:52:56

标签: python

我目前正在开展一个项目,其中包括由我前面的研究生编写的软件包。简而言之,该软件包是一个硬件控制系统,有两个独立的应用程序,它们同时运行 - Module1和Module2。笨重,但它现在运作得很好。

我目前的问题是将这两个Python程序放到' talk'对彼此。 Module1是各种控制面板,Module2是发生数据收集的实时输出图。如果Module1类中的某个变量为true,我需要Module2才能读取它并做出相应的反应。 Module1有一个Tkinter框架,如果有帮助,Module2是用PyQt构建的。

2 个答案:

答案 0 :(得分:0)

一种方法是让他们参与pub-sub系统,其中发布者发布命令并且订阅者对它们做出反应。

考虑0mqkafka

答案 1 :(得分:0)

如果两个程序都在同一台机器上运行并且您正在使用linux,则可以使用命名管道,这是一种特殊类型的文件,用于在进程之间共享信息。有关如何使用命名管道的简单示例,请参阅Python read named PIPE。我建议您通过示例来查看它是否符合您的目的。如果示例不足,您可以在此处阅读如何在python中创建命名管道的文档:https://docs.python.org/3/library/os.html#os.mkfifo

要实现您的特定情况,您可以修改Module1,以便在变量值更改时向包含变量值的命名管道发送消息。您可以在设置变量值的类方法中执行此操作。另外,您可以修改Module2以定期检查命名管道中是否有数据。如果有数据,则检索数据并使用检索到的变量值使Module2根据需要做出反应。

应用程序线程与命名管道的使用无关。无论您使用何种框架,命名管道都应该可以正常工作。您应该将命名管道视为一个应用程序正在写入的文件,同时另一个应用程序正在读取。