我在Python代码中执行一些操作,这些操作对于python来说太慢了。
我需要解释一下我正在做的事情的全球背景。
我正在阅读python中某个板的输入。这是一个连续的操作(我从电路板上连续读取数据)。
我还需要通过对这些数据进行一些计算来连续处理这些数据。它们在实践中保存在numpys数组中。
为了提高计算速度,我想用C或C ++运行它们。
但是由于一切都是连续的,我需要将python numpy数组从python快速传输到C ++。因此,我的问题如下:
从python运行C ++代码的更好方法是什么,从numpy数组转换到C ++表的变量是最快的?在理想情况下,C ++代码" 直接"是否可能?读取内存中的numpy数组?
我已经阅读了一些关于在Python中使用C ++的主题,但是我不确定C ++是否会全速运行,或者只是简单地在python中使用C ++代码(但它会比一个完全的C ++程序)。
答案 0 :(得分:3)
您可以通过cython使用预编译库来完成您想要实现的目标。
将您的C / C ++代码编译成动态库(.so on * nix,.dll在Windows上); export
你想在python中使用的函数。
然后,您可以使用ctypes.cdll.LoadLibrary
(https://docs.python.org/3/library/ctypes.html)在您的python代码中加载库,并使用numpy.ctypeslib.ndpointer
(https://docs.scipy.org/doc/numpy/reference/routines.ctypeslib.html)将指针传递给您的numpy数组。
如果确保numpy数组是连续的,它可以像预期的那样在C / C ++中使用。