我需要編寫一個非常特定的數據處理守護進程。對我來說多處理是正確的工具嗎?
這裏是我怎麼想它可能與多工作:
流程#1:一個過程來獲取一些重要的元數據,它們可以被提取每一秒,但這些數據必須在過程中提供#2。進程#1寫入數據,進程#2讀取它們。
過程#2:兩個過程,它們將根據過程#1中接收到的內容獲取真實數據。提取的數據將被存儲到(稍後)處理的(大)隊列中
進程#3:輪詢在進程#2中創建的隊列並處理這些數據的兩個(或多個)進程。一旦完成,新的隊列被填充以用於進程#4中
進程#4:將讀取由進程#3填充的隊列並通過HTTP發回結果的兩個進程。
所有這些不同過程背後的想法是儘可能地使它們專門化,並使它們儘可能地獨立。
全部放入系統過程將被包裝成在這裏實現主守護程序:
我想知道如果我所想象的是相關的/愚蠢/矯枉過正/等,特別是如果我在守護進程的主父進程中運行守護進程multiprocessing.Process
(es)。此外,我有點擔心潛在的鎖定問題。理論上講,讀寫數據的過程使用不同的變量/結構,以避免一些問題,但我仍然擔心。
也許對我的上下文使用多處理並不是正確的做法。我很想獲得關於此的反饋。
注:
- 我不能使用Redis的作爲數據結構服務器
- 我想過使用ZeroMQ IPC的,但我會避免使用其他額外庫,如果多可以做的工作也是如此。
在此先感謝您的意見。