LowLevelCallable#
- class scipy.LowLevelCallable(function, user_data=None, signature=None)[source]#
Low-level callback function.
Some functions in SciPy take as arguments callback functions, which can either be python callables or low-level compiled functions. Using compiled callback functions can improve performance somewhat by avoiding wrapping data in Python objects.
Such low-level functions in SciPy are wrapped in
LowLevelCallableobjects, which can be constructed from function pointers obtained from ctypes, cffi, Cython, or contained in Python PyCapsule objects.See also
Functions accepting low-level callables:
scipy.integrate.quad,scipy.ndimage.generic_filter,scipy.ndimage.generic_filter1d,scipy.ndimage.geometric_transformUsage examples:
Extending scipy.ndimage in C, Faster integration using low-level callback functions
- Parameters:
- function{PyCapsule, ctypes function pointer, cffi function pointer}
Low-level callback function.
- user_data{PyCapsule, ctypes void pointer, cffi void pointer}
User data to pass on to the callback function.
- signaturestr, optional
Signature of the function. If omitted, determined from function, if possible.
- Attributes:
- function
Callback function given.
- user_data
User data given.
- signature
Signature of the function.
Methods
from_cython(module, name[, user_data, signature])Create a low-level callback function from an exported Cython function.
Notes
The argument
functioncan be one of:PyCapsule, whose name contains the C function signature
ctypes function pointer
cffi function pointer
The signature of the low-level callback must match one of those expected by the routine it is passed to.
If constructing low-level functions from a PyCapsule, the name of the capsule must be the corresponding signature, in the format:
return_type (arg1_type, arg2_type, ...)
For example:
"void (double)" "double (double, int *, void *)"
The context of a PyCapsule passed in as
functionis used asuser_data, if an explicit value foruser_datawas not given.