3

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

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

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

目标操作系统是unix。

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

更新:

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

4

2 回答 2

5

我认为套接字是通往这里的路。在 Unix 上,我推荐使用AF_UNIX套接字(参见unix(7)手册页)。这些很容易在 C++ 和 python(sockets模块)中创建。这避免了端口冲突或在本地系统上打开端口的权限问题。

Unix 套接字的性能相当不错,AF_INET6如果您决定与远程工作者一起工作,可以轻松地将其交换为套接字。

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

于 2012-06-29T14:02:41.477 回答
1

我的默认选择是使用通过 localhost 进行通信的普通套接字。套接字是一种很好理解的语言和平台中立的 API,性能往往非常好。它们还具有不将您绑定到同一个盒子上的两个进程的优点,这在许多情况下都是有利的。

于 2012-06-29T13:58:38.760 回答