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」ブロック内でメソッドが呼び出された場合(strなど、ロックが再取得されます...これは悪いことです。ロック内で作業していることがわかったときに呼び出すメソッドの別のセットを作成する必要がありますか? ?