Код Cython не работает

Я написал некоторый код Python, и он отлично работал при использовании «python». Затем я преобразовал его в C, используя «Cython», и использовал distutils, чтобы скомпилировать его в разделяемую библиотеку. Затем я изменил часть кода на Cython, чтобы он работал быстрее. Но когда я импортировал модуль .so и попытался использовать команду «cdef», он сказал, что этой команды не существует. Оригинальный код:

import time as t
def time(function):
    t1 = t.time()
    function()
    t2 = t.time()
    return t2 - t1

Новый код:

import time as t
cdef time(function):
    t1 = t.time()
    function()
    t2 = t.time()
    return t2 - t1

Я попытался использовать «cdef int time», но получил тот же результат. Любой совет?


person None    schedule 16.04.2010    source источник


Ответы (1)


cdef функции не доступны для Python. cpdef предоставляется для предоставления оболочки Python для функции C, определенной в Cython.

Кроме того, вам, вероятно, лучше использовать timeit, чем возиться с реализацией этого.

person Mike Graham    schedule 16.04.2010
comment
Я знал, что есть лучшие способы, но это был просто пример. - person None; 17.04.2010