python - 将 cython 函数传递给 cython 函数

标签 python function-pointers cython

我有一个 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/

相关文章:

Python Flask Angular 应用程序状态不刷新

C++:指向不相关结构内的类成员函数的指针

Cython 递归结构声明

python - (Python 3.4 Tkinter) 框架问题

python - 如何手动打开Python同时写入的文件?

python - scipy.interp2d 警告和与预期不同的结果

c++ - 自定义排序和映射时更喜欢函数指针还是函数对象?

c++ - 错误 C2064 : term does not evaluate to a function taking 0 arguments

ipython - cython在jupyter笔记本中

python - Tornado 协程在 Cython 中不起作用