我正在使用python多处理,并试图阻止同时更新许多资源(例如文件),每个资源都由一个名称标识。我事先并不知道所有的名字。 因此我正在尝试使用
class A:
resource_locks_lock = RLock()
resource_locks = {} # type: Dict[str, RLock]
def some_method(self, name: str) -> None
with A.resource_locks_lock:
if name not in A.resource_locks.keys():
A.resource_locks[name] = RLock()
A.resource_locks[name].acquire()
[...]
A.resource_locks[name].release()
但是,这并不会阻止此类的多个实例在单独的进程中(使用python多处理)同时访问锁定的资源。似乎每个进程都有自己的字典版本和锁。
我需要做些什么来阻止跨python多处理边界的同时访问?