将多进程用作本地进程间通信

5 投票
2 回答
2432 浏览
提问于 2025-04-17 08:09

我在考虑使用Python的多进程包来实现本地Python程序之间的消息传递。

如果满足以下条件,这似乎是个不错的选择:

  • 这些程序总是在同一台机器上运行(而且是同一个操作系统)
  • 这些程序的实现将一直使用Python
  • 速度很重要

如果用户独立运行这些Python进程,也就是说一个进程并不是由另一个进程启动的,这样的情况下可以实现吗?

怎么做呢?
文档似乎只给出了一个进程启动另一个进程的例子。

2 个回答

1

这些程序总是在同一台机器上(以及同一个操作系统实例)本地运行。

多进程可以实现远程并发

这些程序的实现将会保持在Python中。

是的,也不是。你可以把其他命令封装在一个Python函数里。例如,这样做是可以的:

from multiprocessing import Process
import subprocess

def f(name):
    subprocess.call(["ls", "-l"])

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

速度很重要。

这取决于几个因素:

  • 进程之间的协调会造成多少额外开销?
  • 你的CPU有多少个核心?
  • 每个进程需要多少磁盘输入输出?它们是否在同一个物理磁盘上工作?
  • ...

如果Python进程是由用户独立运行的,也就是说一个进程没有生成另一个进程,这种情况是否可行?

我不是这个领域的专家,但我曾经实现过类似的功能,通过文件来交换数据[基本上一个进程的输出文件被另一个进程监控作为输入源,反之亦然]。

希望这对你有帮助!

撰写回答