Возможно ли иметь общий диктат Locks в python3?Мне нужно несколько блокировок, потому что я хочу защитить часть общих ресурсов.Каждый ресурс получает блокировку:
manager = multiprocessing.Manager()
locks = manager.dict({key : manager.Lock() for key in range(100)})
shared_resource = manager.dict({key : SomeClass() for key in range(100)})
# later in a multi-processed function
def foo(key):
# ...
locks[key].acquire()
shared_resource[key] = ...
locks[key].release()
# ...
Этот игрушечный пример потерпит неудачу с:
multiprocessing.managers.RemoteError:
---------------------------------------------------------------------------
Unserializable message: ('#RETURN', <unlocked _thread.lock object at 0x7f9a4c9dc468>)
Есть идеи, как обойти эту проблему?Я мог бы использовать условные переменные?Или как бы вы защитили список ресурсов?