将C++程序输出与 Python 脚本链接

Link C++ program output with Python script

本文关键字:Python 脚本 链接 输出 C++ 程序      更新时间:2023-10-16

我有一个C++程序,它使用一些非常具体的方法来计算数据集(30,000个元素)的成对距离。输出文件为 20 GB,如下所示:

点 1, 点 2, 距离 X点,点J,距离xx.....

然后,我将文件输入到Python并使用Python(NumPy)进行聚类。使用 Python 读取输出文件需要很长时间。有没有办法将C++程序直接与我的 Python 代码连接,以节省中间文件的 I/O 时间?也许使用 SWIG?

我假设你一直在保存ascii。您可以修改C++代码以编写二进制文件,并使用numpy.fromfile读取它。

为了更直接的连接,你可以使用 swig 将你的C++代码包装为一个库(删除 main() 并从 Python 驱动它)。这允许您在C++和Python之间共享数组的内存。

您可以在C++端使用 Python 的缓冲区协议,在 Python 端使用 numpy.frombuffer。或者您可以使用 numpy 标头直接处理 C++ 中的 numpy 数组。下面是使用第二种方法的小型 wig 示例项目。(免责声明:是我写的。