2013-01-17 44 views
2

我有兩種類型的進程。如何使用python信號在獨立進程之間發送消息?

我希望進程B等待來自進程A的消息。一旦A發送消息,進程B應處理消息並再次等待。

此外,我將有多個進程A和進程B的實例。因此,所有B進程都應將消息發送到所有A進程。

我在看像signals,但附帶一個字符串。

這樣做的最好方法是什麼?

我知道我可以創建一個pipe並繼續閱讀pipewhile,但它似乎無益。另外,一旦閱讀,它會不會從pipe中刪除?

注意:沒有一個進程是彼此的子進程。

+1

進程'A'和'B'如何知道對方? –

+1

他們沒有。但是如果有幫助的話,我可以讓所有'A'進程在某處註冊它們的線程標識。 – ATOzTOA

回答

1

這是我結束了在最後做...

的製造生產加工成module並將其導入到消費者。因此,這兩個過程都可以共享變量。

生產者線程將繼續生產,消費者線程將繼續消耗。我正在使用condition來同步數據,threading.Condition()

每個生產者線程:

  • 採集condition
  • 將數據寫入到一個全局變量
  • 呼叫notifyAll()
  • 發佈condition

每個消費者線程:

  • 採集condition
  • 等待condition
  • 讀取和處理數據的全局變量
  • 等待condition ...

這僅僅是一個高層次視圖。就我而言,我有不同類型的生產者線程,每個生成不同的數據並且針對特定的消費者羣體。所以,我有一個list of condition

Reference on condition