我已经用Python编写了一个高级电机控制器,并且我已经达到了一个点,我想降低一点来获得一些速度,所以我有兴趣用C编码这些位。
我对C没有多少经验,但我正在研究的数学计算非常简单,所以我确信我能用最少量的撞击墙来实现。我不确定的是如何最好地调用这个编译的C程序,以便将它的输出传回我的高级python控制器。
我已经使用了一些ctypes,但只是从manufacfturer提供的DLL中提取一些函数...不确定这是否是在这种情况下适当的路径。
有什么想法吗?
答案 0 :(得分:1)
您可以查看本教程here。
此外,官方python网站here上的一个更可靠的例子。
例如,
sum.h
功能
int sum(int a, int b)
名为module.c
,
#include <Python.h>
#include "sum.h"
static PyObject* mod_sum(PyObject *self, PyObject *args)
{
int a;
int b;
int s;
if (!PyArg_ParseTuple(args,"ii",&a,&b))
return NULL;
s = sum(a,b);
return Py_BuildValue("i",s);
}
static PyMethodDef ModMethods[] = {
{"sum", mod_sum, METH_VARARGS, "Description.."},
{NULL,NULL,0,NULL}
};
PyMODINIT_FUNC initmod(void)
{
PyObject *m;
m = Py_InitModule("module",ModMethods);
if (m == NULL)
return;
}
的Python
import module
s = module.sum(3,5)
答案 1 :(得分:0)
另一种选择:尝试numba。 它可以免费提供类似C的速度:只需输入numba和@autojit你的功能,就可以提高速度。
如果你有复杂的数据类型,它将不起作用,但如果你循环并跳过数组索引,它可能正是你正在寻找的。 p>
答案 2 :(得分:0)
你可以使用SWIG,使用起来非常简单
答案 3 :(得分:0)
您可以使用Cython设置必要的c类型并编译您的python语法代码。