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