我在考虑使用类变量作为线程锁,因为我不想在全局变量中定义锁并且还想防止死锁。这实际上有用吗?例如:
import threading
class A(object):
lock = threading.Lock()
a = 1
@classmethod
def increase_a(cls):
with cls.lock:
cls.a += 1
考虑到我不会在类的内部或外部重新分配A.lock
变量,我的假设是它被视为全局锁定?这是对的吗?
答案 0 :(得分:2)
不确定。你想要一个易于获得的锁的引用,并将它存储在类中就可以了。
你可能想要调用它__lock
(激活name mangling),所以它不会与A的子类中的锁混淆