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

时间:2016-10-16 12:27:33

标签: python c++ data-transfer

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

我的问题:

  1. 我正在使用C ++中的大数据集(最多6 GB的RAM)。所有计算都是用c ++完成的。
  2. 然后,我想"粘贴"我的所有结果都是Python程序。但我只能在磁盘上写入我的数据,然后从Python中读取该文件,这是无效的。
  3. 有没有办法#34; map"内存对应C ++变量,以便我可以从Python访问数据?我不想将6GB的数据复制到硬盘上。

1 个答案:

答案 0 :(得分:3)

第一条道路:我认为更合适的方式是ctypes。您可以创建一个共享库,然后在Python中加载共享库的功能,并在Python中填充所需的所有数据容器。

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

现在,这有一个优势,即它将独立于您的Python版本。

第二条道路:我认为它不太合适,但你可以让它发挥作用,即Python C Extension。有了这个,你可以调用Python数据容器(PyObject s)并将它们填入C。

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

使用哪一个?

  • 如果您要在C / C ++中调用某些函数,请使用ctypes,然后在Python中完成其余的工作。
  • 如果您想在Python中调用某些函数,请使用Python C扩展,并且您希望在C / C ++中完成其余的工作。

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

希望这有帮助。