目录

  • 前言
  • mmap(读文件)
  • write(写文件)

前言

内存映射通常可以提高I/O的性能,因为使用内存映射时,不需要对每个访问都建立一个单独的系统调用,也不需要在缓冲区之间复制数据,内核和用户都能很方便的直接访问内存。

本篇,将详细介绍Python内存映射库:mmap。

mmap(读文件)

使用mmap()函数可以创建一个内存映射文件。该函数的第1个参数是一个文件描述符,可以通过file对象的fileno()函数获取;第2个参数是要映射的文件部分大小(单位字节),如果该值为0,映射整个文件,如果该参数大于文件大小,则扩展该文件。

示例如下:

import mmapwith open('英文文档.txt','r') as f:with mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ) as m:print(m.read(10))print(m.read(10))print(m[:-10])

运行之后,效果如下:

这里读写会根据文件指针进行移动,比如开始读10个字符,那么第2次读就会接着11个字符开始在读,不会返回起点,而通过切片或者seek()函数可以将指针重置。

至于access参数,表示以什么方式访问,这里以读的方式。

需要特别注意的是,windows不支持创建长度为0的映射。

write(写文件)

写文件比较简单,这里我们直接看一段代码:

import mmapword = b'The'with open('英文文档.txt', 'r+') as f:with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_WRITE) as m:loc = m.find(word)m[loc:loc + len(word)] = b'lyj'print(m.read())

运行之后,首字母The,就被我们替换成"lyj"了,效果如下:

当然,这里除了切片写入之外,也可以使用write()等文件操作方法进行操作,与文件操作一样。需要注意的是假如access等于ACCESS_COPY,那么不会把修改的内容写入磁盘上的文件。

mmap库:Python内存映射文件操作相关推荐

  1. matlab内存映射文件操作

    日常我们使用matlab进行模型训练,每次训练需要加载的数据都是比较大,都是千万级别的数据,如果从txt或者csv中读取,需要很长时间,这样很影响读取数据的效率.matlab有自己的方式,将数据文件快 ...

  2. 【JavaNIO的深入研究4】内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射...

    内存映射文件能让你创建和修改那些因为太大而无法放入内存的文件.有了内存映射文件,你就可以认为文件已经全部读进了内存,然后把它当成一个非常大的数组来访问.这种解决办法能大大简化修改文件的代码. file ...

  3. 内存映射文件mmap原理分析

    本文来说下内存映射文件 mmap 原理 文章目录 mmap原理分析 mmap原理分析 假设我们要把一个磁盘文件映射到内存里来,然后把映射到内存中的数据通过socket发送出去. 零拷贝有两种实现方式, ...

  4. MongoDB内存映射文件

    2019独角兽企业重金招聘Python工程师标准>>> Mongodb源码分析--内存文件映射(MMAP) 内存映射文件原理探索 Linux 内存映射函数 mmap()函数详解 Li ...

  5. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  6. python怎么读取文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  7. mmap函数_Linux内存映射mmap原理分析

    一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了...下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内 ...

  8. [译].NET 4 中玩耍内存映射文件

    原文链接 : http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net- ...

  9. python怎么读写文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  10. 使用内存映射文件来提高你程序的性能

    本人在学习<WINDOWS核心编程>的时候对JEFFREY大师提到的一个小程序写了两个版本来比较性能,该程序的原始需求是这样的:对一个大文件进行倒序,也就是将一个文件头变成尾,尾变成头. ...

最新文章

  1. Linux期末复习题库(3)
  2. 使用React Hooks你可能会忽视的作用域问题
  3. python中的浅拷贝与深拷贝——copy()
  4. iOS 开发疑难杂症(01)
  5. accp8.0转换教材第1章多线程理解与练习
  6. 家装强电弱电布线图_家装电路改造注意事项是什么?深圳广田家透彻分析全搞定...
  7. 360 回应安全云盘出现交易异常;苹果官网陆续限购 iPhone;GitHub 屏蔽微软工程师的开源项目 | 极客头条...
  8. 电子邮件地址中服务器怎么看,你如何检查电子邮件服务器(gmail)中的某个地址,并基于该地址运行一些东西?...
  9. 数字图像处理(冈萨雷斯 第三版)
  10. 接待员如何向客人upsell_酒店前厅部概述-.ppt
  11. 逆火效应:该对谁负责?
  12. CyanogenMod编译
  13. 基于ARM裸机的知识点总结(9)------基于S5PV210的定时器、看门狗和RTC
  14. 无线局域网设备安装与调试
  15. 宅男福利!爬虫实战,爬取原神真人c图片并保存,谁的老婆快抱走
  16. 【计算+大数据】-武汉理工大学主办-2021年第四届计算与大数据国际会议(ICCBD 2021)
  17. Google Payments?
  18. 信号幅度单位/功率单位 及其换算 Layout长度单位
  19. 最小二乘法的C语言实现
  20. [App]Taste VS2015 Android Studio

热门文章

  1. Mysql8安装教程——安装包版
  2. linux纯终端下中文输入,Linux中文输入法的问题解决
  3. 2022年最新《谷粒学院开发教程》:12 - 项目完结篇
  4. PMP证书考试攻略:项目管理考试技巧篇(名师分享PPT)
  5. python清屏命令-python清屏命令
  6. vmlinuz的产生
  7. 论文降重从80%降到1%的方法
  8. 计算机鼠标显示停顿原因,经常遇到鼠标指针停顿卡的解决方法
  9. 查看CDSN关注的博主
  10. TigerGraph集群安装