scipy.
LowLevelCallable#
- class scipy.LowLevelCallable(function, user_data=None, signature=None)[源代码][源代码]#
低级回调函数。
SciPy 中的一些函数将回调函数作为参数,这些回调函数可以是 Python 可调用对象或低级编译函数。使用编译的回调函数可以通过避免将数据包装在 Python 对象中来在一定程度上提高性能。
SciPy 中的这些底层函数被封装在
LowLevelCallable
对象中,这些对象可以从 ctypes、cffi、Cython 获得的函数指针构造,或者包含在 Python 的 PyCapsule 对象中。参见
接受低级可调用函数的函数:
scipy.integrate.quad
,scipy.ndimage.generic_filter
,scipy.ndimage.generic_filter1d
,scipy.ndimage.geometric_transform
使用示例:
ndimage-ccallbacks, 使用低级回调函数进行更快的积分
- 参数:
- 函数{PyCapsule, ctypes 函数指针, cffi 函数指针}
低级回调函数。
- 用户数据{PyCapsule, ctypes 空指针, cffi 空指针}
传递给回调函数的用户数据。
- 签名str, 可选
函数的签名。如果省略,则尽可能从 function 中确定。
- 属性:
- 函数
回调函数已给出。
- 用户数据
用户数据已提供。
- 签名
函数的签名。
方法
from_cython
(module, name[, user_data, signature])从导出的 Cython 函数创建一个低级回调函数。
注释
参数
function
可以是以下之一:PyCapsule,其名称包含 C 函数签名
ctypes 函数指针
cffi 函数指针
低级回调的签名必须与它传递给的例程所期望的签名之一匹配。
如果从 PyCapsule 构建底层函数,capsule 的名称必须是相应的签名,格式如下:
return_type (arg1_type, arg2_type, ...)
例如:
"void (double)" "double (double, int *, void *)"
如果未明确给出
user_data
的值,则作为function
传递的 PyCapsule 的上下文将用作user_data
。