在Cython中分配字节数组并传回Python的最佳方法是什么?

2 投票
1 回答
3640 浏览
提问于 2025-04-18 07:32

我有一个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 数组。

撰写回答