如何在Python中跨進程同步存取共享資料?

Barbara Streisand
發布: 2024-11-27 15:06:15
原創
645 人瀏覽過

How to Synchronize Access to Shared Data Across Processes in Python?

跨進程同步存取共享資料:多重執行全域字典的場景中,同步變得至關重要以確保結果一致。在一個程式中遇到了這個問題,該程式需要多個進程在存取和修改共享字典時在佇列上進行協作,D。

在子程序中檢查字典時會出現差異,其中修改是可見的。然而,加入主進程佇列後,字典變空,表示存在同步/鎖定問題。

理解問題

同步挑戰源自於以下事實:不同的流程同時操作同一個字典。如果沒有正確的同步,每個進程所做的變更可能無法一致地反映在所有進程中,從而導致資料損壞或不一致。

解決方案:利用管理器物件

A強大的解決方案涉及使用多處理庫中的 Manager 物件。該物件提供了一種可建立和管理可由多個進程同時存取和修改的共享資料結​​構的機制。

程式碼片段示範瞭如何有效地實現此方法:

中在這個例子中,manager.dict()方法創建了一個可以被多個進程訪問和修改的共享字典。進程同時修改字典,然後列印字典,顯示更新的值。

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)
登入後複製
這種方法有效地同步對共享字典的訪問,確保所有進程對資料修改有一致的視圖。

以上是如何在Python中跨進程同步存取共享資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板