什么时候应该使用内存视图?

发布于 2024-10-15 04:12:07 字数 457 浏览 2 评论 0原文

Memoryview 的完整描述可以在此处找到:

创建一个引用obj内存视图obj 必须支持缓冲区协议。支持缓冲区协议的内置对象包括 bytesbytearray

内存视图具有元素的概念,它是由原始对象obj处理的原子内存单元。对于许多简单类型(例如 bytesbytearray),元素是单个字节,但其他类型(例如 array.array)可能具有更大的元素.

The full description of memoryview can be found here:

Create a memoryview that references obj. obj must support the buffer protocol. Built-in objects that support the buffer protocol include bytes and bytearray.

A memoryview has the notion of an element, which is the atomic memory unit handled by the originating object obj. For many simple types such as bytes and bytearray, an element is a single byte, but other types such as array.array may have bigger elements.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人间☆小暴躁 2024-10-22 04:12:07

内存视图本质上是 Python 本身的通用 NumPy 数组结构(没有数学)。它允许您在数据结构(例如 PIL 图像、SQLlite 数据库、NumPy 数组等)之间共享内存,而无需先进行复制。这对于大型数据集非常重要。

有了它,你可以做一些事情,比如内存映射到一个非常大的文件,切片该文件的一部分并对该部分进行计算(如果你使用 NumPy,则最简单)。

A memoryview is essentially a generalized NumPy array structure in Python itself (without the math). It allows you to share memory between data-structures (things like PIL images, SQLlite data-bases, NumPy arrays, etc.) without first copying. This is very important for large data sets.

With it you can do things like memory-map to a very large file, slice a piece of that file and do calculations on that piece (easiest if you are using NumPy).

我恋#小黄人 2024-10-22 04:12:07

从文档中,我认为它用于“访问支持缓冲区协议的对象的内部数据而不进行复制”,因此您可以使用大量数据进行操作,而不会填满内存。我不知道你是否想要例子,但不幸的是我想不出任何例子。

From the documentation, I figure it's used to "access the internal data of an object that supports the buffer protocol without copying", so you can do things with huge chunks of data without filling up your memory. I don't know if you want examples, but I can't think of any, unfortunately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文