如何在cython中将模块作为struct的参数传递?

时间:2017-07-27 20:38:38

标签: python dictionary struct cython

我没有使用cython的经验,只是开始学习它。我正在尝试将模块作为参数传递给结构,但我不知道如何? 这是我在Jupyter-notebook中尝试的示例代码:

%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列表,因为当我阅读here时,它是不可能的使用带有python dicts的nogil 如果有人能找到某种方法来克服问题以尽可能快的速度运行,那将非常感激。
感谢。

1 个答案:

答案 0 :(得分: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

    <..>