我正在考虑使用类变量作为线程锁,因为我不喜欢在全局变量中定义锁,也想防止死锁。这真的有效吗?示例:
import threading
class A(object):
lock = threading.Lock()
a = 1
@classmethod
def increase_a(cls):
with cls.lock:
cls.a += 1
考虑到我不会在类内或类外的某处重新分配 A.lock
变量,我的假设是它被视为与全局锁相同?这是正确的吗?
最佳答案
当然。您希望拥有一个易于获取的锁的引用,将其存储在类中就可以了。
你可能想称它为 __lock
(激活 name mangling),这样它就不会与 A 的子类中的锁混淆
关于Python:我可以使用类变量作为线程锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788474/