我听说过从Python代码调用C函数的不同方法,比如ctypes,cython,swig,Boost.python等.当然,每个方法都有优缺点.我的问题是关于效率.我需要从Python调用C数值函数.这种C函数的典型示例是:
double f(double x){ return sin(x)+cos(x)-pow(2,x) + x*x; }
调用需要在一次运行中迭代2000-200000次.
在这样的背景下,C->Python
我应该使用哪种变压器?
调用用C实现的函数不会神奇地使程序运行得更快.不执行用Python编写的代码可能会加速您的程序.因此,通过将这样一个简单的函数移动到C例程中,您将无法获得任何重要信息.如果你在一个紧凑的循环中调用它,函数本身可能很快,但用Python编写的循环的开销将完全占主导地位.因此,一般的想法是将尽可能大的任务移动到C例程中.在您的示例中,这可能是整个循环.一旦你用一个C函数调用完成的工作量足够大,函数调用开销本身就会变得微不足道,所以你不必担心这么多.调用该功能,但您觉得最方便.机会很高,它不会以可衡量的方式影响性能.