如何传递一个模块作为cython中struct的参数?
问题描述:
我没有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。
如果有人能够找到某种方式来解决问题的代码尽可能快地运行,这将不胜感激。
谢谢。
答
唯一可以进入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
<..>
我不认为结构可以容纳Python对象(比如模块),因为Cython应该如何为它们生成引用计数代码并不明显。无论如何,您需要使用gil才能访问该模块。 – DavidW