memoryview()
函数返回给定参数的内存视图对象。
在了解什么是内存视图之前,需要首先了解什么是缓冲区协议。
缓冲区协议提供了一种访问对象内部数据的方法。该内部数据是存储阵列或缓冲区。
缓冲区协议允许一个对象公开其内部数据(缓冲区),而另一个对象无需中间复制即可访问这些缓冲区。
只能在C-API级别上访问此协议,而不能使用常规代码库。
因此,为了将相同的协议公开给普通的Python代码库,需要使用内存视图。
内存视图是在Python中公开缓冲区协议的安全方法。
允许通过创建内存视图对象来访问对象的内部缓冲区。
每当对对象执行某些操作(调用对象的函数,对数组进行切片)时,Python都需要创建该对象的副本。
处理大量数据(例如,图像的二进制数据),则不必要地创建大量数据的副本,这几乎毫无用处。
使用缓冲协议,可以给另一个对象访问权限以使用/修改大数据,而无需复制它。这使程序使用更少的内存并提高了执行速度。
要使用公开缓冲区协议memoryview()
,使用以下语法:
memoryview(obj)
memoryview()
函数采用单个参数:
obj
必须支持缓冲协议(bytes,bytearray)。
示例:
>>> memoryview(b'\x00')
<memoryview>
memoryview()
函数返回一个内存视图对象。
使用memoryview()
random_byte_array = bytearray('ABC', 'utf-8')
mv = memoryview(random_byte_array)
print(mv[0])
print(bytes(mv[0:2]))
print(list(mv[0:3]))
第一行创建utf8格式的bytearray对象ABC
第二行创建了一个内存视图对象 MV
第三行访问了 MV的第0个索引,'A'并打印出来(给出ASCII值-65)
第四行访问了 MV的索引从0和1开始'AB',并将其转换为字节
第五行访问了 MV的索引从0和2开始'ABC',并将其转换为字节
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。