Python / Cython / C и обратные вызовы, вызов функции Python из C с использованием Cython

У меня следующий вопрос. Мы должны передать функции обратного вызова в C-код. Если функция является функцией Cython в том же модуле, ситуация довольно проста

В Cython:

def callme(int x):
    c_callme(x, <int (*)(int)>&callbackme) 

cdef int callbackme(int x):
    print <int> x
    return <int>x

В С:

int c_callme(int x, int (*f)(int))
{
    printf("---%d\n",x);
    printf("--%d\n",f(x));
    return x;
}

Вопрос заключается в следующем: мы хотим обобщить этот код наиболее Pythonic-способом, чтобы он мог также принимать функции Python в качестве аргументов обратного вызова (конечно, требуется дополнительный уровень), а также функции C / Cython из другого модуля. Я полагаю, что для функций C / Cython из отдельного модуля нужно получить адрес этих функций (преобразовать в long int?), А для функции Python необходима определенная оболочка

Ответы на вопрос(2)

Ваш ответ на вопрос