C++ 和 Python 之间的数据传输
Data transfer between C++ and Python
我想在 C++ 和 Python 之间共享内存。
我的问题:
- 我正在使用 C++ 处理大数据集(高达 6 GB 的 RAM)。所有的计算都是用c++完成的。
- 然后,我想 "paste" 我所有的结果到一个 Python 程序。但我只能将我的数据写入磁盘,然后从 Python 读取该文件,效率不高。
有什么方法可以"map" 对应于C++ 变量的内存,以便我可以从Python 访问数据?我不想将 6GB 的数据复制到硬盘上。
第一条路:我觉得你走的路比较合适ctypes。你可以创建一个共享库,然后在Python中加载共享库的函数,在Python中填充你想要的所有数据容器。
在Windows中可以创建DLL,在Linux中可以创建共享.so库。
现在这样做的好处是它独立于您的 Python 版本。
第二条路:我觉得不太合适,但是你可以让它工作,就是Python C Extension。有了这个,你可以调用Python个数据容器(PyObject
s)并在C.
中填充它们
但是,您在此处编译的代码始终需要链接到 Python 个库。
用哪个?:
- 如果你想在C/C++中调用某些函数,请使用ctypes,然后在Python.
中完成其余工作
- 如果您有一些函数要在 Python 中调用,而您想要在 C/C++ 中完成其余部分,请使用 Python C 扩展。
使用这两个选项,您可以在 C++ 和 Python 之间传输巨大的内存块,而不必涉及任何磁盘 read/write 操作。
希望对您有所帮助。
我想在 C++ 和 Python 之间共享内存。
我的问题:
- 我正在使用 C++ 处理大数据集(高达 6 GB 的 RAM)。所有的计算都是用c++完成的。
- 然后,我想 "paste" 我所有的结果到一个 Python 程序。但我只能将我的数据写入磁盘,然后从 Python 读取该文件,效率不高。
有什么方法可以"map" 对应于C++ 变量的内存,以便我可以从Python 访问数据?我不想将 6GB 的数据复制到硬盘上。
第一条路:我觉得你走的路比较合适ctypes。你可以创建一个共享库,然后在Python中加载共享库的函数,在Python中填充你想要的所有数据容器。
在Windows中可以创建DLL,在Linux中可以创建共享.so库。
现在这样做的好处是它独立于您的 Python 版本。
第二条路:我觉得不太合适,但是你可以让它工作,就是Python C Extension。有了这个,你可以调用Python个数据容器(PyObject
s)并在C.
但是,您在此处编译的代码始终需要链接到 Python 个库。
用哪个?:
- 如果你想在C/C++中调用某些函数,请使用ctypes,然后在Python. 中完成其余工作
- 如果您有一些函数要在 Python 中调用,而您想要在 C/C++ 中完成其余部分,请使用 Python C 扩展。
使用这两个选项,您可以在 C++ 和 Python 之间传输巨大的内存块,而不必涉及任何磁盘 read/write 操作。
希望对您有所帮助。