C++与Python之间的简单IPC(跨平台)
我有一个在后台运行的C++程序,它会偶尔生成一些“事件”,而同一台机器上还有一个Python程序需要获取这些事件。
- C++那边的代码需要尽量轻量级。
- Python那边只需要读取数据,不需要修改。
- 这个实现必须能够在不同的操作系统上运行。
- 发送的数据非常简单。
我有哪些选择呢?
谢谢!
7 个回答
5
使用zeromq,这东西简单得不能再简单了。
60
zeromq — 就只用这个。把消息编码成字符串。
不过,如果你想从一个库里获取序列化功能,可以用protobuf,它会为Python和C++生成类。你可以在两端使用SerializeToString()和ParseFromString()这两个函数,然后通过ZeroMq传输这些字符串。
问题解决了,我觉得没有其他方案能比这个更快,也没有其他方案能像这个一样简单易懂。
如果你想在RPC中使用特定的系统原语,比如在Windows上使用命名管道,或者在Unix上使用Unix域套接字,那么你可以看看Boost::ASIO。不过,除非你有(a) 网络背景和(b) 对C++非常了解,否则这会花费你很多时间。