我有一个函数,我试图返回一个数字和一个向量的向量。我拥有的是什么
cdef func() nogil:
cdef vector[int] vect
cdef int a_number
...
return a_number, vect
但这会产生像Assignment of Python object not allowed without gil
这样的错误。有解决方法吗?
Cython有一个ctuple
类型http://docs.cython.org/en/latest/src/userguide/language_basics.html#types
%%cython -a -f -+
from libcpp.vector cimport vector
cdef (vector[int], double) func() nogil:
cdef vector[int] vec
cdef double d = 3.14
cdef int i
for i in range(10):
vec.push_back(i)
return vec, d
你需要返回一个C ++结构:一个struct,一个vector,一个std :: pair等,而不是一个python tuple对象。