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

Tor*_*cht 9 python multithreading locks

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

import threading

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

    @classmethod
    def increase_a(cls):
        with cls.lock:
            cls.a += 1
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ooy 5

当然。您希望获得对易于获取的锁的引用,并将其存储在类中就可以了。

不过,您可能想调用它__lock(以激活名称修改),因此它不会与 A 子类中的锁混淆