在Cython中分配字节数组并传回Python的最佳方法是什么?
我有一个Cython函数,名字是 cdef generate_data(size)
,我想要做以下几件事:
- 初始化一个长度为
size
的字节数组 - 调用一个外部的(
C
)函数,用数组的指针和大小来填充这个数组 - 把这个数组返回给Python,让Python能理解(比如返回为bytearray、bytes,或者其他你们的建议)
我在网上看到过很多方法,但我想找到在我这个简单情况下最好的/推荐的做法。我希望:
- 避免内存重新分配
- 不使用numpy
- 最好能在Python 3和2.7中都能用,虽然只要有2.7的解决方案也可以。
我使用的是Cython 0.20。
1 个回答
1
关于内存分配的问题,我有相关的内容可以参考。
之后,你只需要获取一个指针(如果你使用我推荐的 cpython.array.array
,可以从 data
属性获取)并把它传递出去。你可以返回 cpython.array.array
类型,它就会变成一个 Python 数组。