如何在多处理中共享锁定字典

时间:2016-10-17 17:37:21

标签: python python-3.x locking multiprocessing

我正在使用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多处理边界的同时访问?

0 个答案:

没有答案