我有一个现有的C进程,可以接受一个文本输入并生成一个图像文件。 由于它与外部系统的接口,这个C过程具有很高的设置/拆卸成本。 一旦设置/拆卸发生,文本中图像的实际生成几乎是即时的。
我的计划是守护进程,因此它将在无限循环中接收文本并生成图像文件,同时保持与外部系统的连接。
我还将在python中编写一个小型客户端程序,它将与守护进程交互以发送文本/接收图像。
目标操作系统是unix。
问题是,在这种情况下,在python / C之间进行双向IPC的最佳方法是什么? 我应该只打开一个unix域套接字并来回发送打包的结构,还是应该看看像Apache Thrift或protobuf这样的东西?
更新:
只是保持简单,并打开一个unix域套接字
答案 0 :(得分:4)
套接字是我想到的方式。在Unix上,我建议使用AF_UNIX
套接字(参见unix(7)
联机帮助页)。这些很容易在C ++和python(sockets
模块)中创建。这可以避免端口冲突或本地系统上打开端口的权限问题。
Unix套接字执行得相当好,如果您决定与远程工作人员合作,可以轻松地交换AF_INET6
个套接字。
对于打包/解包数据,使用compiled Struct
objects的struct
模块对我来说似乎是合理的。多数民众赞成在过去我是如何做到的,表现非常好(没有进行任何测量,因为这对我来说太好了调查)。
答案 1 :(得分:1)
我的默认选择是使用通过localhost进行通信的普通套接字。套接字是一种易于理解的语言和平台中立的API,往往表现得非常好。它们的优点是不会将您绑定到同一个盒子上的两个进程,这在许多情况下都是有利的。