gpt4 book ai didi

Python - 创建一个使用 threading.lock() 锁定对象的类

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:12 26 4
gpt4 key购买 nike

尝试创建一个可以使用 threading.lock 锁定对象的类:

class ObjectLock(object):
def __init__(self):
self._lock = threading.Lock()
self._value = False
def __str__(self):
self.acquire()
try:
if(self._value):
return self._value
else:
return self._value
finally:
self.release()
def __enter__(self):
self.acquire()
def __exit__(self, type, value, traceback):
self.release()
def acquire(self):
self._lock.acquire()
def release(self):
self._lock.release()
def locked(self):
return self._lock.locked()

lock = ObjectLock()

print(lock)
with lock:
print (lock)

问题是我正在尝试实现“with”。如果在“with” block (例如 str)中调用了一个方法,则重新获取锁...这很糟糕。我必须创建一组单独的方法来调用吗?知道我在锁内工作吗?

最佳答案

首先,我不明白为什么 __str__ 需要获取锁,所以我认为这个前提没有实际意义。

如果您确定内部锁定是可取的,请考虑使用可重入锁,例如threading.RLock .这样,单个线程将能够根据需要多次获取锁,而不会出现死锁。

关于Python - 创建一个使用 threading.lock() 锁定对象的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15209113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com