Как использовать словарь в Cython, внутри функции nogil - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу использовать dict как

{0: [1.], 
 1: [2.]} 

Я знаю, что работать с обычным объектом Python внутри функции Cython nogil недопустимо, поэтому я хочу использовать IntFloatDict в sklearn /utils / fast_dict.pyx .

После замены обычного Python dict внутри функции Cython nogil на IntFloatDict:

# distutils: language=c
cimport numpy as np
from fast_dict cimport IntFloatDict


np.import_array()


cdef IntFloatDict test_fast_dict(IntFloatDict a) nogil:
    return a


cdef IntFloatDict t 
t = IntFloatDict(np.ndarray([1]), np.ndarray([5.]))
test_fast_dict(t)

Затем я получил:

Error compiling Cython file:
------------------------------------------------------------
...


np.import_array()


cdef IntFloatDict test_fast_dict(IntFloatDict a):
    ^
------------------------------------------------------------

test_c_nogil.pyx:9:5: 'IntFloatDict' is not a type identifier

Какой смысл выше, как это решить?

...