2010-04-16 134 views
2

我編寫了一些Python代碼,使用「python」時它工作正常。然後我使用「Cython」將它轉換爲C,並使用distutils將它編譯到共享庫。然後我將一些代碼更改爲Cython,以便運行得更快。但是,當我導入.so模塊,並試圖使用命令時,我有「cdef」編輯它說,該命令不存在。 原始代碼:Cython代碼不起作用

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時間」,但我得到了同樣的結果。有什麼建議?

回答

2

cdef函數不會暴露給Python。提供了cpdef來爲Cython中定義的C函數提供一個Python包裝器。

此外,您可能更喜歡使用timeit而不是執行此操作。

+1

我知道有更好的方法,但這只是一個例子。 – None 2010-04-16 23:12:05