可以找到memoryview的完整描述here:
创建引用 obj 的
memoryview
。 obj 必须支持缓冲协议。支持缓冲协议的内置对象包括bytes
和bytearray
。
memoryview
具有元素的概念,它是由原始对象 obj 处理的原子内存单元。对于许多简单类型,例如bytes
和bytearray
,元素是单个字节,但其他类型(如array.array
)可能包含更大的元素。
答案 0 :(得分:21)
memoryview本质上是Python本身的通用NumPy数组结构(没有数学运算)。它允许您在没有首次复制的情况下在数据结构(诸如PIL图像,SQLlite数据库,NumPy数组等之类)之间共享内存。这对于大型数据集非常重要。
有了它,你可以做一些事情,比如将内存映射到一个非常大的文件,切一块那个文件并对那块文件进行计算(如果你使用的是NumPy,最简单)。
答案 1 :(得分:3)
从文档中,我认为它用于“访问支持缓冲协议而无需复制的对象的内部数据”,因此您可以使用大量数据执行操作而不会填满内存。我不知道你是否想要例子,但不幸的是我想不出任何例子。