我正在考虑使用类变量作为线程锁,因为我不想在全局变量中定义锁并且还想防止死锁。这实际上有用吗?例:
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黑洞网,博客园同步更新