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',并将其转换为字节
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )