」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Python 進程之間共享鎖

如何在 Python 進程之間共享鎖

發佈於2024-11-08
瀏覽:401

How to Share Locks Between Python Processes

在Python 進程之間共用鎖定

當嘗試在多個進程之間使用鎖定時,您可能會遇到錯誤, 「鎖定物件應該只透過繼承在進程之間共享。」

要解決這個問題,有兩種主要方法:

使用Manager

此方法涉及建立一個Manager 物件並傳遞Manager.Lock():

from multiprocessing import Manager
...
m = Manager()
l = m.Lock()

但是,使用 Manager 需要一個額外的進程來託管 Manager 伺服器並透過 IPC 進行通訊。

在池中傳遞鎖定創建

另一種方法是使用初始化器關鍵字參數在池創建時傳遞常規multiprocessing.Lock():

def init(l):
    global lock
    lock = l

l = multiprocessing.Lock()
pool = multiprocessing.Pool(initializer=init, initargs=(l,))

此方法使鎖實例在所有子程序中全域化。請注意,這種方法消除了對偏函數的需要。

透過採用其中一種技術,您可以在 Python 進程之間有效地共享鎖,從而允許協調存取共享資源。

版本聲明 本文轉載於:1729132333如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3