Я пытаюсь вызвать функцию из библиотеки C ++, определенной следующим образом:
int somefunc(float timeout);
Я удвоил определение в файле pxd
:
int somefunc(float timeout) nogil;
Но любая попытка вызов функции с nogil
приводит к той же ошибке при цитонизации файла pyx
:
timeout = 1.0
with nogil:
Q.somefunc(timeout)
Error compiling Cython file:
------------------------------------------------------------
...
int(block), timeout,
)
timeout = 1.0
with nogil:
Q.somefunc(timeout)
^
------------------------------------------------------------
script.pyx:105:23: Coercion from Python not allowed without the GIL
Я также попытался вызвать ее с типом c, что вызывает ту же ошибку.
timeout = ctypes.c_float(1.0)
with nogil:
Q.somefunc(timeout)
Только с использованием поплавковых буквальных произведений. Как правильно вызывать эту функцию с действительной переменной Python?