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()