[英]Acquire a multiprocessing.Lock in a with statement if non-blocking or with timeout
[英]Can I acquire multiprocessing's Lock in a with statement?
如果一個進程無法解鎖multiprocessing
進程鎖,就會發生可怕的事情。 為了盡量減少發生這種情況的機會,我想在with
塊中獲取鎖。 有什么內置的方法可以做到這一點,還是我需要自己動手?
是的,你可以這樣做:
mylock = multiprocessing.Lock()
with mylock:
...
因為 Lock 是一個上下文管理器。 RLock 以及來自線程的 Lock 和 RLock 也是如此。
文檔確實聲明它是“threading.Lock 的克隆”,因此您可以參考“在 with 語句中使用鎖、條件和信號量”
[編輯 2020: 文檔現在明確提到了這一點]
是的。 該文件現在明確指出:
Lock支持上下文管理器協議,因此可以在with語句中使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.