python - 关于python中的Buffer接口(interface)

标签 python python-2.7 python-3.x pybuffer pep3118

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

最佳答案

“底层内存结构”是指组成计算机内存中对象的八位字节序列。例如,当你创建字符串"abc"时,Python必须至少预留3个字节的内存来存储字母ab、和 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/

相关文章:

django - Django 1.6 的静态文件

python - 将最后 X 列值求和到新列中

python - 删除导入的 python 模块

python - 使用 python - 仅从键 :value pairs in parsed JSON 中获取特定值

python-3.x - 使用Qtbot在菜单栏和工具栏中模拟鼠标点击

python - VS2013中的PTVS : Why does this for loop not catch the StopIteration?

python-3.x - Python : recall cached function result dependent on new function parameter

python - 推送到服务器时获取所有提交

python - Django 进行条件格式化的方法

mysql - Django AutoField 默认值错误