将cython函数传递给cython函数

时间:2013-08-21 02:48:50

标签: python function-pointers cython

我有一个Cython函数,我希望将序列化函数作为参数传递:

cdef my_serializer(serialization_func, data):
    return serialization_func(data)

我要处理的所有序列化程序(msgpack,ujson)也是C / cython函数。声明serialization_func的正确方法是什么,以便Cython可以进行早期绑定?

1 个答案:

答案 0 :(得分:2)

这是有效且可读的:

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)