c++和Python之间的通信

Communication between C++ and Python

本文关键字:通信 之间 Python c++      更新时间:2023-10-16

我正在寻找一种高效和智能的方式来在c++程序和python脚本之间发送数据。我有一个c++程序,可以实时计算30Hz的坐标。我想用python脚本访问这些坐标。我的第一个想法是简单地创建一个.txt文件并将坐标写入其中,然后让Python打开该文件并读取。但我想,这肯定是一种更智能、更高效的方式,使用内存而不是硬盘。

有人有什么好的解决方案吗?c++程序应该将3个坐标(x,y,z)写入某种缓冲区或文件,Python程序可以打开它并读取它们。理想情况下,c++程序每次都覆盖坐标,同时读写文件/缓冲区是没有问题的。

谢谢你的帮助

您有两个基本选项:

  • 将c++代码和python代码作为两个独立的程序,在两个独立的进程中运行,并使用IPC机制
  • 按照grc的建议,将c++代码与你的代码链接起来。

如果您已经编写了一个完整的复杂c++程序,那么第一个选项可能更好。而且,它通常更容易调试和维护。

对于特定的IPC机制,通常使用套接字,因为它们在操作系统级别具有某种标准化的跨平台api,并且如果您需要在不同的机器上运行两个程序仍然可以工作。如果你处理的是一台现代的桌面机器,socket应该足以每秒传输30次三个坐标。

如果你真的需要更多的性能,你可以研究(命名的或命名的)管道,但是你可能需要在c++端做一些额外的工作来使它跨平台。

我认为如果python和c++程序在同一台机器上,我们可以使用命名管道来进行通信。