将数据从python发送到c ++作为参数或文件?

Sending data from python to c++ as parameters or file?

本文关键字:参数 文件 数据 python      更新时间:2023-10-16

>我有两个程序。我的主要程序是 python 的,我还有另一个 c++ 程序,因为我必须连接到一台机器,而我可以使用这台机器的唯一方法是用构造函数给我的 c++ 制作的 dll/lib。

在我的 python 中,我从数据库中获取数千个点,我正在对它们进行一些操作,这些点存放在一个类的不同数组中。

现在,我需要将这些点发送到c ++程序,我想知道如何。我可以将它们作为参数发送到 c++ 程序的主程序,但命令行太长了,我认为即使它不是太长,这也是一个非常糟糕的做法(如果有人可以解释一点原因,那就太酷了!

实际上,我认为在我的 python 程序中生成一个包含此文件中的所有坐标的文件,并将其也发送到 c++,但我必须在 c++ 中解析它。 这是一个好方法吗?或者也许其他解决方案会更好?

一些方法:

  1. subprocess.Popen()stdin=subprocess.PIPE一起使用,每行写入一个数据,在C++端解析
  2. 使用临时文件,文本文件或其他文件
  3. 使用ctypes并将C++部分加载为共享库,然后直接从 Python 调用C++函数
  4. 使用 Python 的
  5. struct模块将 Python 中的数据编码为 C 结构,从而避免字符串格式化和字符串解析 - 这可以与上述三种中的任何一种结合使用:subprocess.Popen(在C++中从stdin读取二进制数据)、临时文件(以二进制模式打开)或ctypes(将指向结构的指针直接传递给库函数)

至于为什么在命令行上传递参数是有问题的,操作系统施加了一些限制,例如getconf ARG_MAX。