从python将变量传递给C ++并以全速(而不是python速度)运行C ++

时间:2017-12-16 17:12:16

标签: python c++

我在Python代码中执行一些操作,这些操作对于python来说太慢了。

我需要解释一下我正在做的事情的全球背景。

我正在阅读python中某个板的输入。这是一个连续的操作(我从电路板上连续读取数据)。

我还需要通过对这些数据进行一些计算来连续处理这些数据。它们在实践中保存在numpys数组中。

为了提高计算速度,我想用C或C ++运行它们。

但是由于一切都是连续的,我需要将python numpy数组从python快速传输到C ++。因此,我的问题如下:

从python运行C ++代码的更好方法是什么,从numpy数组转换到C ++表的变量是最快的?在理想情况下,C ++代码" 直接"是否可能?读取内存中的numpy数组?

我已经阅读了一些关于在Python中使用C ++的主题,但是我不确定C ++是否会全速运行,或者只是简单地在python中使用C ++代码(但它会比一个完全的C ++程序)。

1 个答案:

答案 0 :(得分:3)

您可以通过cython使用预编译库来完成您想要实现的目标。

将您的C / C ++代码编译成动态库(.so on * nix,.dll在Windows上); export你想在python中使用的函数。

然后,您可以使用ctypes.cdll.LoadLibraryhttps://docs.python.org/3/library/ctypes.html)在您的python代码中加载库,并使用numpy.ctypeslib.ndpointerhttps://docs.scipy.org/doc/numpy/reference/routines.ctypeslib.html)将指针传递给您的numpy数组。

如果确保numpy数组是连续的,它可以像预期的那样在C / C ++中使用。