应该何时使用内存视图?

时间:2011-01-30 20:44:56

标签: python python-3.x memoryview

可以找到memoryview的完整描述here

  

创建引用 obj memoryview obj 必须支持缓冲协议。支持缓冲协议的内置对象包括bytesbytearray

     

memoryview具有元素的概念,它是由原始对象 obj 处理的原子内存单元。对于许多简单类型,例如bytesbytearray,元素是单个字节,但其他类型(如array.array)可能包含更大的元素。

2 个答案:

答案 0 :(得分:21)

memoryview本质上是Python本身的通用NumPy数组结构(没有数学运算)。它允许您在没有首次复制的情况下在数据结构(诸如PIL图像,SQLlite数据库,NumPy数组等之类)之间共享内存。这对于大型数据集非常重要。

有了它,你可以做一些事情,比如将内存映射到一个非常大的文件,切一块那个文件并对那块文件进行计算(如果你使用的是NumPy,最简单)。

答案 1 :(得分:3)

从文档中,我认为它用于“访问支持缓冲协议而无需复制的对象的内部数据”,因此您可以使用大量数据执行操作而不会填满内存。我不知道你是否想要例子,但不幸的是我想不出任何例子。