20 Star 82 Fork 22

黑胡桃实验室 BlackWalnut Labs. / Waffle NanoV1 Python API Doc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.96 KB
一键复制 编辑 原始数据 按行查看 历史
诌在行 提交于 2021-07-09 05:39 . !12更新 memoryview

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',并将其转换为字节

Python
1
https://gitee.com/blackwalnutlabs/waffle_nano_v1_python_api_document.git
git@gitee.com:blackwalnutlabs/waffle_nano_v1_python_api_document.git
blackwalnutlabs
waffle_nano_v1_python_api_document
Waffle NanoV1 Python API Doc
master

搜索帮助