初始問題here。python不同的子進程和通訊
我在我的python項目中有一個架構:主應用程序進程產生許多子進程。主進程監聽網絡連接,然後數據接收主進程將該數據傳遞給所有子進程而不相互監聽。子進程可能執行或不執行(取決於收到的)數據,如果他們需要執行操作 - 他們必須將消息發送到主進程,以便通過其網絡連接將數據發送到服務器。對於我的架構,我想,有一個回調體系結構通常可以實現observer pattern from head of four
會很好。
我有一個進程不只是並行工作者 - 它是不同的子進程,可以對管道/隊列中的相同數據執行不同的操作,但是如果我將代碼調整到隊列中,那麼子進程必須使用task_queue.get()從父進程獲取數據,但是如果其中一個子進程將從task_queue獲取任何任務 - 其他子進程將不會收到該數據並且不會執行操作。我需要將task_queue中的每個任務傳遞給所有子進程,並從中收聽答案。
我已經試圖通過管道實現這個功能 - 但它需要大量數據(至少存儲管道),我不知道如何通過許多進程來實現管道功能 - 在任何地方我都看到了它的例子有一個管道,並且它是inifinite循環 - 因此我不能使用它,因爲主進程不知道此時要監聽哪個子進程(實際上只有一個子進程會執行某個動作)。
我也嘗試通過隊列來實現它 - 但是如果一個子進程會調用'task_queue.get()' - 它會從任務隊列中刪除這個項目,但我需要將這些數據傳遞給我的所有子進程。另外,在這兩種方法中,我需要監聽所有子進程,但是我希望作爲其操作的觀察者 - 如果某些子進程想要執行某個操作 - 將數據發送到主進程,然後在主進程中調用回調 - 功能和...
我早知道蟒蛇,請給我,我怎麼能知道這件事情的方式。
Python的'select'模塊可以讓你等待許多管道I/O的一次。 – Barmar