cython pure python с подсказками типа - PullRequest
0 голосов
/ 28 марта 2020

Я разработал код для bio python, который я хотел бы ускорить в своих собственных приложениях, добавляя файлы .pxd и компилируя с помощью Cython. Попутно я добавил подсказки типа, так как думал, что это будет улучшением (на самом деле я надеялся, что Cython будет автоматически использовать их, но это не так). Теперь я обнаружил, что подсказанный типом код несовместим с улучшением Cython, которое я намеревался. Например, взяв пример convolve_py.py из учебника cython numpy :

def naive_convolve(f, g):

, изменив значение на:

def naive_convolve(f: np.ndarray, g: np.ndarray) -> np.ndarray:

, когда я поставлю

cpdef np.ndarray[np.int_t, ndim=2] naive_convolve(np.ndarray[np.int_t, ndim=2] f, np.ndarray[np.int_t, ndim=2] g)

в соответствующем файле .pxd (он работает для случая без подсказок типов выше). Я получаю:

def naive_convolve(f: np.ndarray, g: np.ndarray) -> np.ndarray:
              ^
------------------------------------------------------------

convolve_py.py:4:19: Compiler crash in AnalyseDeclarationsTransform

У меня те же результаты с более простыми типами в моем собственном коде. Насколько я понимаю, Cython должен обрабатывать функции 3.x, а документация относится к подсказкам типов, есть ли другой подход или опция, которую я упускаю? Моя строка компиляции:

cythonize -3 -i convolve_py.py convolve_py.pxd
...