mmap

Поддержка файлов с отображением памяти

Отображенные в память файловые объекты ведут себя как байтовые массивы, так и файловые объекты. Вы можете использовать объекты mmap в большинстве мест, где ожидается bytearray; например, вы можете использовать модуль re для поиска в файле с отображением в память. Вы также можете изменить один байт, выполнив obj [index] = 97, или изменить подпоследовательность, присвоив срезу: obj [i1: i2] = b '...'. Вы также можете читать и записывать данные, начиная с текущей позиции файла, и seek() через файл в разные позиции.

Файл с отображением памяти создается конструктором mmap, который отличается в Unix и Windows. В любом случае вы должны предоставить файловый дескриптор для файла, открытого для обновления. Если вы хотите отобразить существующий файловый объект Python, используйте его метод fileno (), чтобы получить правильное значение для параметра fileno. В противном случае вы можете открыть файл с помощью функции os.open (), которая напрямую возвращает дескриптор файла (после завершения файл все равно необходимо закрыть).

Если вы хотите создать отображение памяти для буферизованного файла с возможностью записи, вы должны сначала использовать flush () файл. Это необходимо, чтобы гарантировать, что локальные модификации буферов действительно доступны для отображения.

Для версий конструктора как для Unix, так и для Windows доступ может быть указан как необязательный параметр ключевого слова. access принимает одно из четырех значений: ACCESS_READ, ACCESS_WRITE или ACCESS_COPY, чтобы указать память только для чтения, сквозную запись или копирование при записи соответственно, или ACCESS_DEFAULT, чтобы отложить до prot. access можно использовать как в Unix, так и в Windows. Если access не указан, Windows mmap возвращает отображение со сквозной записью. Начальные значения памяти для всех трех типов доступа берутся из указанного файла. Назначение карте памяти ACCESS_READ вызывает исключение TypeError. Назначение карте памяти ACCESS_WRITE влияет как на память, так и на базовый файл. Назначение карте памяти ACCESS_COPY влияет на память, но не обновляет базовый файл.

Изменено в версии 3.7: Добавлена константа ACCESS_DEFAULT.

Чтобы отобразить анонимную память, в качестве fileno необходимо передать -1 вместе с длиной.

Классы mmap

  • mmap.mmap class Windows

  • mmap.mmap class Unix

Отображенные в память файловые объекты поддерживают следующие методы:

  • mmap.close ()

  • mmap.closed

  • mmap.find ()

  • mmap.flush ()

  • mmap.madvise ()

  • mmap.move ()

  • mmap.read ()

  • mmap.read_byte ()

  • mmap.readline ()

  • mmap.resize ()

  • mmap.rfind ()

  • mmap.seek ()

  • mmap.size ()

  • mmap.tell ()

  • mmap.write ()

  • mmap.write_byte ()

Константы MADV_*

Last updated