何时应使用memoryview?
关于memoryview的详细说明可以在这里找到:
创建一个
memoryview
,它引用了obj。obj必须支持缓冲区协议。支持缓冲区协议的内置对象包括bytes
和bytearray
。
memoryview
有一个概念叫做元素,它是由原始对象obj处理的基本内存单元。对于许多简单类型,比如bytes
和bytearray
,一个元素就是一个字节,但其他类型,比如array.array
,可能会有更大的元素。
2 个回答
3
根据文档的说明,我了解到它的作用是“在不复制的情况下访问支持缓冲区协议的对象内部数据”,这样你就可以处理大量数据,而不会占用太多内存。我不知道你是否需要例子,但很遗憾我想不出任何例子。
34
内存视图(memoryview)可以理解为一种在Python中更通用的NumPy数组结构(不涉及数学运算)。它的主要功能是让你在不同的数据结构之间共享内存,比如PIL图片、SQLite数据库、NumPy数组等等,而不需要先复制数据。这对于处理大数据集来说非常重要。
通过内存视图,你可以做一些事情,比如将一个非常大的文件映射到内存中,然后从这个文件中切出一部分进行计算(如果你使用NumPy,这个过程会更简单)。