Python回调函数

时间:2015-05-21 19:12:42

标签: python-3.x

寻找一个简单的解决方案(比qsort示例更简单)。我在Linux系统上使用Python 3和gcc 4.7。我已经创建了一个共享库,我可以在Python中调用该库中的C函数。我希望能够使用Python回调函数作为参数之一从Python调用C库中的函数。这样,来自C库的函数可以调用另一个Python函数。我已经查看了几个示例(qsort示例和其他示例)并且无法使其工作。有人能告诉我一个非常简单的例子,说明它是如何从Python端和C端完成的?感谢。

1 个答案:

答案 0 :(得分:0)

找到答案。 的Python:

import ctypes

mylib = ctypes.CDLL('sharedlib.so', use_errno=True)

...

CB_FUNC_TYPE = ctypes.CFUNCTYPE(None)

def cb():
    print('Called from C library.')

cb_func = CB_FUNC_TYPE(cb)
mylib.test(cb_func)

C:

typedef void ( *callback_t )( void );
void test( callback_t cb )
{
    printf("Called from Python.\n");
    cb();
}

当然,如果你想要返回值和参数,这会变得有点复杂,但并不多。