Python:我可以使用类变量作为线程锁吗?

时间:2013-05-28 09:26:48

标签: python multithreading locks

我在考虑使用类变量作为线程锁,因为我不想在全局变量中定义锁并且还想防止死锁。这实际上有用吗?例如:

import threading

class A(object):
    lock = threading.Lock()
    a = 1

    @classmethod
    def increase_a(cls):
        with cls.lock:
            cls.a += 1

考虑到我不会在类的内部或外部重新分配A.lock变量,我的假设是它被视为全局锁定?这是对的吗?

1 个答案:

答案 0 :(得分:2)

不确定。你想要一个易于获得的锁的引用,并将它存储在类中就可以了。

你可能想要调用它__lock(激活name mangling),所以它不会与A的子类中的锁混淆