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

Pat*_*ykB 5 c++ python data-transfer

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

我的问题:

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

有什么办法可以“映射”与C ++变量相对应的内存,以便我可以从Python访问数据?我不想将6GB的数据复制到硬盘上。

The*_*ist 4

第一条路:我认为对你来说更合适的路是ctypes。你可以创建一个共享库,然后在Python中加载共享库的函数,并在Python中填充你想要的所有数据容器。

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

现在它的优点是它与你的 Python 版本无关。

第二条路:我认为它不太合适,但你可以让它工作,这是Python C扩展。这样,您就可以调用 Python 数据容器PyObject并将它们填充到 C 中。

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

使用哪一个?

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

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

希望这可以帮助。