我有一个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?我还有其他方法可以组织数据来避免这些问题吗?
答案 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
的伪装)