我有一个 Cython 函数,我想在其中传递一个序列化函数作为参数:
cdef my_serializer(serialization_func, data):
return serialization_func(data)
我将要处理的所有序列化程序(msgpack、ujson)也是 C/cython 函数。声明 serialization_func 以便 Cython 可以进行早期绑定(bind)的正确方法是什么?
最佳答案
这有效且可读性强:
ctypedef void (*SERIALIZATION_FUNC)(char *data)
cdef void my_serializer(SERIALIZATION_FUNC func, char *data):
func(data)
或者,如果你真的想使用 python 对象作为参数和返回值
ctypedef object (*SERIALIZATION_FUNC)(object data)
cdef my_serializer(SERIALIZATION_FUNC func, data):
return func(data)
关于python - 将 cython 函数传递给 cython 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18348083/