在Cython的cdef语句中使用scipy. integration .quad



我正试图通过将其翻译成Cython来加速我的Python。它使用函数scipy. integrated .quad,该函数需要一个python可调用对象作为其参数之一。是否有任何方法来定义和传递一个函数从一个cdef语句在Cython,所以我可以使用这个?

谢谢。

是的,你只需要用一个python函数来包装这个函数。

def py_callback(a):
   return c_callback(a)
cdef float c_callback(float a):
   return a * a
...
scipy.integrate.quad(py_callback)

当然有一点转换过载。另一种方法是查找该函数是如何实现的。

  • 它是一个C函数的包装器,尝试从pyx文件直接调用C函数(创建一个封装scipy c模块的pxd)。
  • 如果是纯Python,尝试将其翻译成Python。

否则,您必须使用其他纯C积分函数,并跳过scipy函数。

最新更新