1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/blackwalnutlabs-waffle_nano_v1_python_api_document

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

memoryview()

概要

  memoryview()函数返回给定参数的内存视图对象。

  在了解什么是内存视图之前,需要首先了解什么是缓冲区协议。

Python缓冲区协议

  缓冲区协议提供了一种访问对象内部数据的方法。该内部数据是存储阵列或缓冲区。

  缓冲区协议允许一个对象公开其内部数据(缓冲区),而另一个对象无需中间复制即可访问这些缓冲区。

  只能在C-API级别上访问此协议,而不能使用常规代码库。

  因此,为了将相同的协议公开给普通的Python代码库,需要使用内存视图。

什么是内存视图?

  内存视图是在Python中公开缓冲区协议的安全方法。

  允许通过创建内存视图对象来访问对象的内部缓冲区。

为什么缓冲区协议和内存视图很重要?

  每当对对象执行某些操作(调用对象的函数,对数组进行切片)时,Python都需要创建该对象副本

  处理大量数据(例如,图像的二进制数据),则不必要地创建大量数据的副本,这几乎毫无用处。

  使用缓冲协议,可以给另一个对象访问权限以使用/修改大数据,而无需复制它。这使程序使用更少的内存并提高了执行速度。

memoryview 详解

  要使用公开缓冲区协议memoryview(),使用以下语法:

memoryview(obj)

memoryview()参数

  memoryview()函数采用单个参数:

  • **obj-**要公开其内部数据的对象。obj必须支持缓冲协议(bytes,bytearray)。 示例:
    >>> memoryview(b'\x00')
    <memoryview>

从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 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/blackwalnutlabs-waffle_nano_v1_python_api_document.git
git@gitlife.ru:oschina-mirror/blackwalnutlabs-waffle_nano_v1_python_api_document.git
oschina-mirror
blackwalnutlabs-waffle_nano_v1_python_api_document
blackwalnutlabs-waffle_nano_v1_python_api_document
master