是否可以使用 multiprocessing.Queue 在两个 python 脚本之间进行通信?

Is it possible to use multiprocessing.Queue to communicate between TWO python scripts?

我刚刚了解了 python 并发及其库模块多处理。我遇到的大多数示例都在一个 python 脚本中,它生成多个进程,并使用 multiprocessing.Queue.

在它们之间进行通信

我的问题是:在不使用消息代理或第三方监督应用程序的情况下,两个 python 脚本可以使用 multiprocessing.Queue 相互通信吗?

multiprocessing 模块是一个支持 spawning 进程的包,因此您可以编写并行执行的代码。这意味着您可以编写一个 python 脚本来透明地生成多个进程,而不必担心这些进程如何序列化数据并将其传递给彼此。

至于你的问题,要看...为什么要分开?

  • 如果唯一担心的是您的函数定义在不同的 modules/scripts 中,您可以在使用 Queue 的脚本中导入您需要的所有内容,并使您的所有一个脚本中可用的功能。

  • 如果您的用例是您希望一个脚本等待请求(服务器)而另一个脚本作为客户端(它在需要时向服务器发送请求并等待响应) ,那么你需要实现某种 RPC 协议。

您可以使用 Flask 等 Web 框架制作一个 http 服务器,并从客户端向它发送 http 请求,或者如果您只需要共享简短的消息,您可以使用 [=14= 实现您自己的消息交换协议].

所以总结一下:2 python 进程可以在没有消息代理的情况下进行通信(例如:通过套接字)。但是如果你想 运行 1 python 脚本生成可以相互通信的多个进程,你想使用 multiprocessing。相反,如果您需要启动 2 个独立的脚本并让其中一个请求另一个执行某些工作并 return 输出,则您需要在它们之间实现一些 RPC 协议。 multiprocessing.Queue 对象本身不能替代消息代理。如果您希望独立启动的独立脚本通过消息队列进行通信,则该队列需要存在于正在通信的进程之一(即:服务器)或第三个进程中。