【发布时间】:2013-01-17 13:28:52
【问题描述】:
我正在用 Python3 制作一个应用程序,它将分为 batch 和 gui 部分。
Batch负责处理逻辑,gui负责展示。
我应该使用哪个inter-process communication (IPC) 框架并满足以下要求:
- GUI 可以在除批处理之外的其他设备上运行(GUI 可以在同一设备、智能手机、平板电脑等、本地或网络上运行)。
- 批处理(Python3 IPc 库)应该可以在 Linux、Mac、Windows 上正常运行...
- IPC 应支持用不同语言(Python、Javascript 等)编写的 GUI
- IPC 的性能很重要 - 它应该尽可能“互动”,但不会丢失信息。
- 可以将多个 GUI 连接到同一个批次。
附加:如果保证 GUI 也可以用 Python 编写,是否会有其他选择?
编辑: 我找到了很多 IPC 库,比如这里:Efficient Python to Python IPC 或 ActiveMQ or RabbitMQ or ZeroMQ or。
到目前为止我发现的最好看的选项是:
- rabbitmq
- zeromq
- 热火
他们是否适合解决这个问题?如果不是为什么?如果有更好的地方,请告诉我为什么。
【问题讨论】:
-
使用
SocketServer并通过套接字连接GUI。通过这种方式,您可以确定它可以在每个平台上运行,甚至可以通过网络运行。 -
谢谢。您能否请教一下为什么
SocketServer比zeromq或rabbitmq更好? -
假设本地 IPC,使用套接字是一个可怕的选择,原因有很多。我个人推荐使用
_winapi.ReadFile()和_winapi.WriteFile()以及来自传递给它的父句柄上的子进程的_winapi.DuplicateHandle()的非标准匿名管道双工,因为它直接在RAM 中工作。
标签: python ipc communication rpc