在Cython中键入字符串列表

时间:2019-10-21 17:47:52

标签: cython

我有一个Cython函数,该函数正在接收字符串列表:

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="13"

我希望能够键入doc.GoTo(win32.constants.wdGoToPage, win32.constants.wdGoToNext, "13") 以便引起Cython的加速。问题是,这是一个非常复杂的类型,cdef cbuild(char*** corpus, int state): # corpus is a list of lists of strings cdef char** run for run in corpus: # run is a list of strings ... 似乎不起作用(因此,我无法知道corpus的{​​{1}}是否有效)。

此函数是我的Python应用程序的瓶颈,这就是为什么我要在Cython中重写它。通过键入这些复杂的对象,我该怎么做才能充分利用Cython?我还有其他方法可以组织数据来避免这些问题吗?

1 个答案:

答案 0 :(得分:0)

使用C ++很简单:

from libcpp.vector import vector
from libcpp.string import string

cdef cbuild(vector[vector[string]] corpus, int state):
    cdef vector[string] run
    cdef string word
    for run in corpus:
        for word in run:
            ...

只需确保将language="c++"传递给Cython编译器(例如,作为setuptools.Extension的伪装)