6

我对python中的“缓冲区接口”一词感到很困惑。有人可以用一个例子来解释“一个暴露其底层内存结构的python对象”是什么意思。提前致谢

4

1 回答 1

3

“底层内存结构”是指在计算机内存中构成对象的八位位组序列。例如,当您创建字符串时"abc",Python 必须保留至少 3 个字节的内存并存储字母abc。如果内存是连续的(就像字符串一样),它的地址和大小可以传递给任何想要检查它的 C 代码,而无需通过 Pythonstr类型的开销。

一个有用的例子是array类型。数组是一个与 Python 列表很相似的序列,不同之处在于它包含单一类型的元素——您可以拥有一个整数数组和一个浮点数数组,但不能将两者混合使用。好处是数组尽可能高效地打包数据,将它们存储在平面 C 数组中。该数组通过缓冲区接口公开 - 它允许查询底层 C 数组的确切内存位置和大小,并将其传递给某些 C 函数,该函数将有效地对其进行初始化或将其写入磁盘。numpynumeric 包是围绕 Python 和 C(甚至 FORTRAN)之间的这种数据共享构建的,为此他们扩展了缓冲区协议,其中一些扩展使其成为 Python 3 。

mmap对象为 OS 级内存映射功能提供 Python 接口,还提供缓冲区接口。这使得必须有效访问内存的 C 代码(例如re模块)也可以使用内存映射区域。

于 2013-07-05T18:57:21.957 回答