2017-09-05 82 views
1

我目前正在開發一個項目,其中包含一位研究生在我之前寫的軟件包。簡而言之,該軟件包是用於硬件的控制系統,具有兩個可同時運行的獨立應用程序 - Module1和Module2。笨重,但現在它工作得很好。模塊之間的信號傳遞

我當前的問題涉及讓這兩個Python程序相互「交談」。 Module1是各種控制面板,Module2是發生數據收集的實時輸出圖。如果Module1的類中的某個變量爲真,我需要Module2才能讀取並作出相應的反應。 Module1有一個Tkinter框架,Module2是用PyQt構建的,如果有幫助的話。

+0

保存到磁盤上的臨時文件並讀取它? – ifconfig

回答

0

如果兩個程序都在同一臺機器上運行,並且您使用的是Linux,則可以使用命名管道,這是一種特殊類型的文件,用於在進程之間共享信息。有關如何使用命名管道的簡單示例,請參閱Python read named PIPE。我建議通過這個例子來看看它是否符合你的目的。如果示例不足,可以閱讀有關如何在python中創建命名管道的文檔:https://docs.python.org/3/library/os.html#os.mkfifo

要實現特定情況,可以修改Module1以向包含變量值的命名管道發送消息每當變量的值改變時。您可以在設置變量值的類方法中執行此操作。另外,您可以修改Module2以定期檢查命名管道中是否有數據。如果有數據,檢索數據並使用檢索到的變量值使Module2按需要反應。

應用程序線程與使用命名管道無關。無論您使用的框架如何,命名管道都應該可以工作。您應該將命名管道視爲一個應用程序正在寫入的文件,並且同時另一個應用程序正在讀取該文件。

+0

爲了在兩個應用程序運行期間運行PIPE進程,是否需要使用線程? –

+0

我真的很感激它。這無疑給我指出了正確的方向 –

0

一種方法是讓他們參與pub-sub系統,在這個系統中發佈者發佈命令並且訂閱者對它們做出反應。

考慮0mqkafka