python 任意进程的进程间互斥

python inter-process mutex for arbitrary processes

我需要在 linux 主机上 mutex 多个进程 运行 python

它们的进程不是以我控制的方式产生的(明确地说,它们是我的代码),所以我不能使用 multithreading.Lock,至少据我所知是这样。正在同步的资源是一系列 reads/writes 到两个单独的内部服务,这些服务是旧的、有状态的、不是为 concurrent/transactional 访问而设计的,并且超出了修改范围。

一些我熟悉但到目前为止被拒绝的方法:

在 python 中(在 linux 下;跨平台加分)是否有更好的方法来完成此操作?

同步非子进程的选项:

  1. Use a remote manager。我不是很熟悉这个过程,但文档至少有一个简单的例子。

  2. 使用您自己的协议(而不是管理器)创建一个简单的服务器:类似于环回地址上的套接字服务器,用于在周围弹回简单消息。

  3. 使用文件系统:https://pypi.org/project/filelock/

  4. 在 posix 兼容系统上,有一个相当简单的 IPC 构造包装器 posix-ipc. I also found a wrapper for windows semaphores,但它并不那么简单(尽管按说也不难)。在这两种情况下,您的程序都将使用众所周知的字符串“name”来访问/创建互斥锁。在这两种情况下,都需要注意/错误检查以正确处理互斥体的创建(参见 O_CREX 标志...)