Python Cython创建数组数组/列表列表,但应在gil中使用

Python Cython创建数组数组/列表列表,但应在gil中使用,python,c++,cython,Python,C++,Cython,我想创建一个数组数组。像 [ [ 'hello', 'world' ] , ['hello'] , ['how' , 2, 5 ] ] 因此,内部阵列的大小不是固定的。最后,它不应该是Python对象。因为,我需要在gil内部使用它进行一些操作。我得到的是以下内容,我想可以在“nogil”中使用。但是,如何修改下面的一个矩阵,以便我可以添加动态子数组 %%cython --cplus import numpy def thing(int m, int n): cdef int i,

我想创建一个数组数组。像

[ [ 'hello', 'world' ] , ['hello'] , ['how' , 2, 5 ] ]
因此,内部阵列的大小不是固定的。最后,它不应该是Python对象。因为,我需要在gil内部使用它进行一些操作。我得到的是以下内容,我想可以在“nogil”中使用。但是,如何修改下面的一个矩阵,以便我可以添加动态子数组

%%cython --cplus
import numpy


def thing(int m, int n):
    cdef int i, j
    cdef object[:, :] A = numpy.empty((m, n), dtype=object)

for i in range(A.shape[0]):
    for j in range(A.shape[1]):
        A[i, j] = numpy.zeros(min(i, j))

return A
x =  thing(5,3)  

for i in range(x.shape[0]):
    for j in range(x.shape[1]):
        x[i][j] = add some values ######

你想做什么?是什么阻止你这么做?@PatrickMaupin-这里矩阵A是用m和n初始化的。如果,我的n是变化的呢?这非常令人困惑,因为(a)您的代码格式不正确;(b) 你说你想使用GIL内部的东西;(c)你说它们不应该是Python对象。“Inside”并不是GIL操作的真正特征,但在某种程度上,母语为英语的人会将其解释为“当GIL被持有时”。当GIL被持有时,没有理由使用非Python对象。@PatrickMaupin-我的意思是跟随Patrick。我需要分配列表中的值,这将是一个列表(列表列表)。里面的这些列表没有预先确定的大小。例如:[[1,2],[1,2,3]]。因此,在上面的代码中,它是使用固定的子数组(子列表)大小来完成的。现在,我需要在“with nogil”函数中使用这个列表。因此,它不应该是Python对象。
与nogil
是gil内部的
的对立面,因此您可能应该修改问题以反映这一点,并且可能应该修改您的示例以包含这一点——您的示例根本没有显示这一点。下一个问题——您是否打算使用nogil
代码在
中分配、释放或调整数组大小?(如果不是,请解释为什么您认为它们需要是非Python对象。)