Python 如何在cython中将模块作为struct的参数传递?
我没有使用cython的经验,只是开始学习。我试图将模块作为参数传递给结构,但我不知道如何传递? 这是我在Jupyter笔记本中尝试的示例代码:Python 如何在cython中将模块作为struct的参数传递?,python,dictionary,struct,cython,Python,Dictionary,Struct,Cython,我没有使用cython的经验,只是开始学习。我试图将模块作为参数传递给结构,但我不知道如何传递? 这是我在Jupyter笔记本中尝试的示例代码: %load_ext cython %%cython cdef class A: pass cdef struct person: int num object info cdef person someone p1.idd = 94113 p1.info = A() 如果您能帮我,我将不胜感激。 实际上,我
%load_ext cython
%%cython
cdef class A:
pass
cdef struct person:
int num
object info
cdef person someone
p1.idd = 94113
p1.info = A()
如果您能帮我,我将不胜感激。实际上,我正试图用自己设计的结构来替换代码中的python
dict
列表,因为在我阅读时,不可能将nogil与python dict一起使用。如果有人能找到某种方法来克服这个问题,让代码尽可能快地运行,那将是非常感谢的。
谢谢。唯一可以进入C定义的东西是C类型,
cdef
所描述的
如果您想继续使用结构,这将是一个开始:
ctypedef struct Info:
char[256] address
char[256] name
<..>
ctypedef struct person:
int num
Info info
cdef class Person:
cdef person my_struct
ctypedef结构信息:
字符[256]地址
字符[256]名称
ctypedef结构人:
整数
信息
cdef类人员:
cdef人员我的结构
为了简单起见,而且由于您的目标是在Python中定义一个类并使用该对象,因此可以创建一个cdef类并让Cython为您生成结构
cdef class Person:
cdef char[256] name
cdef char[256] address
cdef int num
<..>
cdef类人员:
cdef char[256]名称
cdef字符[256]地址
cdef int num
我认为结构不能容纳Python对象(如模块),因为Cython应该如何为它们生成引用计数代码并不明显。在任何情况下,您都需要gil来访问模块。