在Python中,我有一个列表作为输入:
input = [[0,1,2],[0,3,4,5],[0,6]]
实际上,子列表的数量是上万个。每个子列表的长度可能会有很大的变化,从零或一个值到几百。在
我想把输入数据作为二维结构传递给一个Cython模块来处理它。我希望在多个核心上处理数据,因此我将prange
与nogil=True
一起使用:
我看到了以下解决方案:
my_func
以接受列表列表。问题是部分代码在没有GIL的情况下执行,因此无法访问python对象。在有人对如何解决这个问题有什么建议,最好是代码方面的建议?在
我可能会使用扁平数组,其中单个列表的开头存储在一个辅助数组中,而不是与csr-matrices不相似。在
下面是一个如何从列表列表(使用numpy,但您也可以使用
array.array
;它也不是真正针对速度进行优化)来构造此数据结构的示例,只是为了给您一个想法:因此,对于您的示例,将产生以下结果:
^{pr2}$您可以看到:有3个子列表以
0
、3
和7
开始,并且是3
(差异starts[1]-starts[0]
)、4
和2
元素。在这就是如何使用这些数据:
相关问题 更多 >
编程相关推荐