Что касается интерфейса буфера в Python

Я довольно запутался с термином "интерфейс буфера" в Python. что значит сказать, что "объект python, демонстрирующий его основную структуру памяти" может кто-то объяснить на примере. Заранее спасибо

1 ответ

Решение

"Базовая структура памяти" относится к последовательности октетов, которые составляют объект в памяти компьютера. Например, когда вы создаете строку "abc", Python должен зарезервировать как минимум 3 байта памяти и хранить буквы a, b, а также c, Если память является смежной (как в случае со строками), ее адрес и размер могут быть переданы любому фрагменту кода C, который хочет проверить его, не проходя через издержки Python str тип.

Полезным примером является array тип. Массив - это последовательность, которая работает почти так же, как список Python, с той разницей, что она содержит однотипные элементы - вы можете иметь массив целых чисел и массив чисел с плавающей запятой, но вы не можете смешивать их. Преимущество заключается в том, что массивы данных максимально эффективно упаковывают данные, сохраняя их в плоском массиве C. Этот массив предоставляется через интерфейс буфера - он позволяет запрашивать точную позицию в памяти и размер базового массива C и передавать его в некоторую функцию C, которая будет эффективно инициализировать его или записывать на диск. numpy Числовой пакет построен вокруг такого рода обмена данными между Python и C (и даже FORTRAN), для чего они расширили буферный протокол, и некоторые из этих расширений превратили его в Python 3.

mmap Объект, который предоставляет интерфейс Python для функциональности отображения памяти на уровне ОС, также предоставляет интерфейс буфера. Это позволяет коду C, который должен эффективно обращаться к памяти, такой как re модуль, также для работы с отображенными в память регионами.

Другие вопросы по тегам