使用 Python 跨進程共享鎖定
在多執行緒應用程式中,鎖定對於同步對共享資源的存取至關重要。然而,當這些進程分佈在多個子進程中時,它們之間共享鎖可能是一個挑戰。
問題:
考慮一個利用 multiprocessing.Lock 的函數() 物件 (l) 管理對關鍵資源的存取。建立工作進程池(pool) 和將鎖作為參數傳遞的部分函數(func) 後,嘗試使用pool.map() 在多個進程之間分配任務會導致運行時錯誤:「鎖定物件只能透過繼承在進程之間共用。 🎜>
解決方案:
要克服此限制並成功跨進程共享鎖,存在兩種可行的方法:使用Manager 物件:
由於需要外部管理器程序和 IPC,此方法引入了額外的開銷。
這使得鎖實例在所有子程序中全域可訪問,消除對部分函數的需要。
以上是如何在 Python 多處理應用程式中的進程之間共享鎖的詳細內容。更多資訊請關注PHP中文網其他相關文章!