我有一個包含字典(稱爲請求)的列表(稱爲requestRoster)。 「請求」字典中的項目就像'requestTime'和'thisURL'。例如: -如何在Python中創建進程間數據結構?
[
{'thisURL': 'http://localhost/bikes', 'requestTime': datetime.datetime(2012, 10, 18, 0, 41, 34)},
{'thisURL': 'http://localhost/clothing', 'requestTime': datetime.datetime(2012, 10, 18, 0, 41, 35)}
]
我使用multiprocessing.Process以產生新的進程發出的每個請求。
我希望每個進程都更新requestRoster,爲每個請求添加一個「響應」項。
我該怎麼做?
我試過使用multiprocessing.Manager()來做一個manager.list()和一個manager.Namespace()。無論讓我做我想做的事情,我想是因爲這個: http://docs.python.org/library/multiprocessing.html#multiprocessing.managers.SyncManager.list
我想我可以用一個multiprocessing.Lock()來
- 獲得互斥
- 使副本過程
- 內的requestRoster修改局部requestRoster
- 覆蓋與所述局部一個
- 釋放互斥「globablised」請求名冊
......但它似乎有點詳細,我不知道我是否缺少更簡單的東西。異步回調會很好。
你的工作人員是否需要從名冊中讀取,或者只是寫回復?從你的描述來看,似乎是一個簡單的隊列,或者是連接調度員和每個工作人員之間的管道,以便將你的響應數據返回,然後調度員可以負責將響應記錄在呼叫歷史記錄中的正確條目中。 –
好吧,一個隊列。所以調度員派遣;工人工作;工作人員將結果添加到隊列中;調度員考慮隊列並將響應出隊。像那樣的東西?我喜歡這一點......我唯一擔心的是讓調度員對任何事情負責,而不是派遣,因爲當數百個請求必須同時派發時,它已經被工作壓垮了。我認爲,工人進程有一個真正的例子可以訪問「全局」數據結構......並且工作人員可以完成所有工作,包括更新。 – dave
這對我越來越重要。我只能在有時間的時候讓調度員離隊 - 但大部分時間都集中在調度上。感謝您的輸入。 – dave