何时应使用memoryview?

39 投票
2 回答
12407 浏览
提问于 2025-04-16 10:55

关于memoryview的详细说明可以在这里找到:

创建一个memoryview,它引用了objobj必须支持缓冲区协议。支持缓冲区协议的内置对象包括bytesbytearray

memoryview有一个概念叫做元素,它是由原始对象obj处理的基本内存单元。对于许多简单类型,比如bytesbytearray,一个元素就是一个字节,但其他类型,比如array.array,可能会有更大的元素。

2 个回答

3

根据文档的说明,我了解到它的作用是“在不复制的情况下访问支持缓冲区协议的对象内部数据”,这样你就可以处理大量数据,而不会占用太多内存。我不知道你是否需要例子,但很遗憾我想不出任何例子。

34

内存视图(memoryview)可以理解为一种在Python中更通用的NumPy数组结构(不涉及数学运算)。它的主要功能是让你在不同的数据结构之间共享内存,比如PIL图片、SQLite数据库、NumPy数组等等,而不需要先复制数据。这对于处理大数据集来说非常重要。

通过内存视图,你可以做一些事情,比如将一个非常大的文件映射到内存中,然后从这个文件中切出一部分进行计算(如果你使用NumPy,这个过程会更简单)。

撰写回答