C++ 和 Python 之间的数据传输

Data transfer between C++ and Python

我想在 C++ 和 Python 之间共享内存。

我的问题:

  1. 我正在使用 C++ 处理大数据集(高达 6 GB 的 RAM)。所有的计算都是用c++完成的。
  2. 然后,我想 "paste" 我所有的结果到一个 Python 程序。但我只能将我的数据写入磁盘,然后从 Python 读取该文件,效率不高。

有什么方法可以"map" 对应于C++ 变量的内存,以便我可以从Python 访问数据?我不想将 6GB 的数据复制到硬盘上。

第一条路:我觉得你走的路比较合适ctypes。你可以创建一个共享库,然后在Python中加载共享库的函数,在Python中填充你想要的所有数据容器。

在Windows中可以创建DLL,在Linux中可以创建共享.so库。

现在这样做的好处是它独立于您的 Python 版本。

第二条路:我觉得不太合适,但是你可以让它工作,就是Python C Extension。有了这个,你可以调用Python个数据容器(PyObjects)并在C.

中填充它们

但是,您在此处编译的代码始终需要链接到 Python 个库。

用哪个?:

  • 如果你想在C/C++中调用某些函数,请使用ctypes,然后在Python.
  • 中完成其余工作
  • 如果您有一些函数要在 Python 中调用,而您想要在 C/C++ 中完成其余部分,请使用 Python C 扩展。

使用这两个选项,您可以在 C++ 和 Python 之间传输巨大的内存块,而不必涉及任何磁盘 read/write 操作。

希望对您有所帮助。