2017-07-27 85 views
-1

我沒有cython的經驗,只是開始學習它。我試圖通過模塊作爲參數結構,但我不知道如何? 這是一個示例代碼,我在Jupyter筆記本的嘗試:如何傳遞一個模塊作爲cython中struct的參數?

%load_ext cython 
%%cython 
cdef class A: 
    pass 

cdef struct person: 
    int num 
    object info 

cdef person someone 
    p1.idd = 94113 
    p1.info = A() 

我將不勝感激幫助我這一點。
其實我試圖用自行設計結構更換蟒蛇dict名單在我的代碼,因爲我讀here,它不可能與蟒蛇http://stardict.sourceforge.net/Dictionaries.php下載使用nogil。
如果有人能夠找到某種方式來解決問題的代碼儘可能快地運行,這將不勝感激。
謝謝。

+1

我不認爲結構可以容納Python對象(比如模塊),因爲Cython應該如何爲它們生成引用計數代碼並不明顯。無論如何,您需要使用gil才能訪問該模塊。 – DavidW

回答

1

唯一可以進入C定義的東西 - 什麼cdef描述 - 是C類型。

像這樣的事情將是一個開始,如果你想使用結構保持:

ctypedef struct Info: 
    char[256] address 
    char[256] name 
    <..> 

ctypedef struct person: 
    int num 
    Info info 

cdef class Person: 
    cdef person my_struct 

爲了簡單,因爲你的目標是定義一個類,並使用Python中的對象,無論如何,可以只是做一個cdef類並讓Cython爲您生成結構。

cdef class Person: 
    cdef char[256] name 
    cdef char[256] address 
    cdef int num 

    <..>