python中全局互斥和实例互斥的区别是什么

python中全局互斥和实例互斥的区别是什么,python,mutex,Python,Mutex,将互斥体用作全局变量或实例变量有什么区别? 例如,这两种用法: my_lock = RLock() class myclass: def __init__(self): self.mutex = my_lock def func(): with self.mutex: #do something 及 你的第一个版本 my_lock = RLock() class myclass: def __init__(se

将互斥体用作全局变量或实例变量有什么区别? 例如,这两种用法:

my_lock = RLock()
class myclass:

    def __init__(self):
        self.mutex = my_lock
    def func():
        with self.mutex:
            #do something

你的第一个版本

my_lock = RLock()
class myclass:

    def __init__(self):
        self.mutex = my_lock
…创建类的所有实例共用的单个互斥体,而

class myclass:

    def __init__(self):
        self.mutex = RLock()
…为每个实例创建互斥锁

在第一种情况下,互斥锁阻止在任何myclass对象中同时执行
func

在第二种情况下,互斥锁阻止在单个myclass对象中同时执行
func

class myclass:

    def __init__(self):
        self.mutex = RLock()