我对 python 中的术语“缓冲区接口(interface)”感到很困惑。有人可以用一个例子来解释“一个暴露其底层内存结构的 python 对象”是什么意思。提前致谢
最佳答案
“底层内存结构”是指组成计算机内存中对象的八位字节序列。例如,当你创建字符串"abc"
时,Python必须至少预留3个字节的内存来存储字母a
、b
、和 c
。如果内存是连续的(如字符串的情况),它的地址和大小可以传递给任何想要检查它的 C 代码,而无需通过 Python str
类型的开销。
一个有用的例子是 array
类型。数组是一种序列,其工作方式与 Python 列表非常相似,不同之处在于它包含单一类型的元素 - 您可以拥有一个整数数组和一个 float 数组,但不能将两者混合。好处是数组尽可能有效地打包数据,将它们存储在平面 C 数组中。该数组通过缓冲区接口(interface)公开——它允许查询底层 C 数组的确切内存位置和大小,并将其传递给某个 C 函数,该函数将有效地初始化它或将其写出到磁盘。 numpy
numeric 包是围绕 Python 和 C(甚至 FORTRAN)之间的这种数据共享构建的,为此他们扩展了缓冲协议(protocol),其中一些扩展使其进入了 Python 3。
mmap
对象为操作系统级内存映射功能提供了 Python 接口(interface),还提供了缓冲区接口(interface)。这使得必须高效访问内存的 C 代码(例如 re
模块)也可以使用内存映射区域。
关于python - 关于python中的Buffer接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495174/