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

标签 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 变量,我的假设是它被视为与全局锁相同?这是正确的吗?

最佳答案

当然。您希望拥有一个易于获取的锁的引用,将其存储在类中就可以了。

你可能想称它为 __lock(激活 name mangling),这样它就不会与 A 的子类中的锁混淆

关于Python:我可以使用类变量作为线程锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788474/

相关文章:

Python抽象方法默认逻辑,super()方法

c# - 线程、复制、错误、SetTextCallback

java - fork /加入 : Collecting results

python - 为什么 Python 3 中会有 {Raw,Safe}ConfigParser?

python - 将 NULL/Empty 值插入实际字段 Postgresql

ruby-on-rails - Ruby on Rails 不是线程安全的是什么意思?

java - java缓存中的锁策略

c - 如何确保在销毁互斥体之前没有其他线程立即获取锁

mysql - 锁是否通过复制传播?

python - 如何为SVC绘制训练数据和训练目标