【发布时间】:2013-05-22 13:31:49
【问题描述】:
我想从 C++ 脚本中获取一个 Python 列表,例如 [1,2,3,4]。我编写了 C++ 脚本,它返回一个向量。
如何在没有 SWIG/SIP/Cython/和其他的情况下连接两端?
将 C++ 编译为 .exe 或 elf 文件,然后从命令行调用,让 .exe 创建一个包含向量的 .txt 并使用 python 读取它会更容易吗?
我的意思是,我只需要一个来自 C++ 的非常小的函数来对大量数据进行繁重的计算。做到这一点最不痛苦和最短的方法是什么?
编辑: 举个例子。 Python 会给 C++ 一个文件名字符串(“foo.txt”),然后它将读取文件的上下文(200,000 行乘 300 列),计算缺失值,然后将每行缺失的数量返回给 Python。这会产生一个包含 200,000 个数字的列表。 两人之间如何进行这种交流?
为了完整起见,这就是我仍然想知道如何去做的事情:
- 将 python 文件名字符串传递给 C++
- 在 C++ 中接收 python 字符串
- 完成在 C++ 中创建向量
- 将向量返回给 Python
- 在 Python 中接收向量
【问题讨论】:
-
很可能大部分时间都花在 C++ 解析输入文件上,因此从时间性能的角度来看,您将如何与 Python 进行通信并不重要。在同一进程中从 Python 调用 C++ 函数(例如,using
ctypes或更容易使用 Cython)是一种更简洁的解决方案,但对您而言,在两个进程之间传递数据可能更简单。