我正在考慮使用類變量作爲線程鎖,因爲我不想在全局變量中定義鎖並且還想防止死鎖。這實際上有用嗎?例:
import threading
class A(object):
lock = threading.Lock()
a = 1
@classmethod
def increase_a(cls):
with cls.lock:
cls.a += 1
考慮到我不會A.lock
在類的內部或外部重新分配變量,我的假設是它被視爲全局鎖定?這個對嗎?
解決方案
當然。你想要一個容易獲得的鎖的引用,並將它存儲在類上就可以了。
你可能想調用它__lock
(激活名稱修改),所以它不會與A的子類中的鎖混淆
本文首發於python黑洞網,csdn同步更新