繁体   English   中英

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

[英]Data transfer between C++ and Python

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

我的问题:

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

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

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

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

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

第二条路径 :我认为它不太合适,但你可以让它工作,这是Python C扩展 有了这个,你可以调用Python数据容器( PyObject s)并在C里面填充它们。

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

哪一个使用?

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

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM