在长时间运行的 c 进程和 python 之间进行双向 IPC 的最佳方法是什么?

jde*_*uce 3 c python ipc thrift protocol-buffers

我有一个现有的 C 进程,可以输入一个文本并生成一个图像文件。由于它与外部系统的接口,此 C 过程具有很高的设置/拆卸成本。一旦设置/拆卸发生,从文本中实际生成图像几乎是即时的。

我的计划是对 C 进程进行守护进程,因此它将无限循环地接收文本并生成图像文件,同时保持与外部系统的连接。

我还将用 python 编写一个小型客户端程序,它将与守护程序接口以发送文本/接收图像。

目标操作系统是 unix。

问题是,在这种情况下,在 python/C 之间进行双向 IPC 的最佳方法是什么?我应该只打开一个 unix 域套接字并来回发送打包的结构,还是应该查看 Apache Thrift 或 protobuf 之类的东西?

更新:

只是要保持简单,并打开一个 unix 域套接字

Jon*_*fer 5

我认为套接字是通往这里的方式。在 Unix 上,我会推荐AF_UNIX套接字(请参阅unix(7)联机帮助页)。这些很容易在 C++ 和 python(sockets模块)中创建。这避免了端口冲突或在本地系统上打开端口的权限问题。

Unix 套接字性能相当好,AF_INET6如果您决定与远程工作者一起工作,可以很容易地将其替换为套接字。

对于打包/解包数据,struct使用编译Struct对象的模块对我来说似乎是合理的。这就是我过去所做的并且性能非常好(没有进行测量,因为它对我来说太好了,无法进行调查)。