如何使用多重處理在多個進程之間共享字典
創建在共享隊列上運行並利用全域字典的多個進程時對於結果存儲,解決同步問題以確保準確的數據操作至關重要。
同步對共享字典的存取的一種方法是使用管理器物件。 Manager 提供了一個建立和管理可由多個進程存取的共用物件的機制。
在此特定場景中,您可以將Manager 物件合併到程式碼中,如下所示:
from multiprocessing import Process, Manager def f(d): d[1] += '1' d['2'] += 2 if __name__ == '__main__': manager = Manager() d = manager.dict() d[1] = '1' d['2'] = 2 p1 = Process(target=f, args=(d,)) p2 = Process(target=f, args=(d,)) p1.start() p2.start() p1.join() p2.join() print(d)
Manager.dict() 方法建立一個可由任何進程存取的共用字典。透過將此字典作為參數傳遞給每個進程,您允許它們同時操作資料。
加入進程後,主進程可以列印共享字典的內容,這將反映累積的結果由所有子進程。
這種方法可確保所有行程都可以存取同一字典,並且一個行程所做的修改對其他行程可見,從而解決了同步問題。
以上是如何使用多重處理在多個行程之間共享字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!