恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Python将文件映射到内存使用mmap.mmap()函数方式

  • 首页
  • 资讯中心
  • /
  • Python将文件映射到内存使用mmap.mmap()函数方式

相关资讯

Java面试必问的JVM调优,这样回答让面试官眼前一亮 2026/9/27 23:00:14
靠谱外贸SEO优化企业,究竟哪家值得托付? 2026/9/27 23:00:14
【夯爆了!多智能体大模型毕业设计】LangGraph+多Agent协作编排的高考志愿填报推荐系统(爬虫+大屏可视化+志愿填报助手+智能推荐)-计算机毕业设计 2026/9/27 23:00:14

最新资讯

一句话生成流程图:next-ai-draw-io 本地部署实操
好看网电影网站模板避坑速查手册:3步解决拖慢交付的报错
DSP28335环境配置与点灯实战:基于CCS 20的完整指南
NodeMCU TCS34725 颜色传感器模块指南:setup/raw/setGain API 与驱动原理
video-use:视频处理全链路自动化工作流解析
小波神经网络房价预测实战:Python实现与调参避坑指南

今日推荐

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Python将文件映射到内存使用mmap.mmap()函数方式

发布时间:2026/9/27 23:00:14
Python将文件映射到内存使用mmap.mmap()函数方式 如何将文件映射到内存实际案例1当你在访问某些二进制文件的时候, 你希望把文件映射到内存里面去, 这样一来就可以实现对文件的随机访问, 这些文件可能包括设备文件。2在某些嵌入式设备的场景下, 寄存器会被编址到内存地址空间里面, 所以我们可以选择映射/dev/mem这个设备的某一特定范围, 从而对这些寄存器发起访问操作。3如果一个文件可以被映射到多个进程当中去, 那么这样一来也是能够通过这种技术手段来达成实现进程间进行通信的那个目的的。解决方案在使用标准库里的mmap这个模块时, 你要调用它的mmap()函数, 而这个函数需要一个已经打开了的文件描述符作为它所需的参数去使用。代码演示# 使用dd命令创建大小为1M的每个字节都是0的二进制文件demo.bin~ % dd if/dev/zero ofdemo.bin bs1024 count102410240 records in10240 records out1048576 bytes transferred in 0.008838 secs (118644037 bytes/sec)# 以16进制形式查看这个文件~ % od -x demo.bin0000000 0000 0000 0000 0000 0000 0000 0000 0000*4000000# 接下来对这个文件进行映射import mmapmmap.mmap函数介绍需要注意对于不同的平台对这个函数使用稍有差别。Windows: mmap(fileno, length[, tagname[, access[, offset]]])Unix: mmap(fileno, length[, flags[, prot[, access[, offset]]]])fileno为文件描述符并不是一个文件对象文件描述符是由系统调用的open函数得到的系统调用的open函数在os.open()也可以使用python的open函数offset为指定映射区域必须以页对齐的# b为二进制模式r为读写权限f open(demo.bin, rb)# 得到文件描述符print(f.fileno())# 做映射映射区域长度为0映射整个文件访问权限写mn mmap.mmap(f.fileno(), 0, accessmmap.ACCESS_WRITE)# m为mmap对象类似于数组一样的操作print(type(mn))print(mn[0])print(mn[10:20])# 对文件进行写操作mn[0] 88# 字符串长度和切片长度保持一致mn[4:8] b\xff * 4# 设置offset跳过4个页并且映射8个页mn2 mmap.mmap(f.fileno(), mmap.PAGESIZE * 8, accessmmap.ACCESS_WRITE,offsetmmap.PAGESIZE * 4)# 对切片进行修改mn2[:0x1000] b\xaa * 0x1000修改文件映射内存的内容并查看# 修改映射地址内容# 查看[0]、[4:8]和[:0x1000]内容修改~ % od -x demo.bin0000000 0058 0000 ffff ffff 0000 0000 0000 00000000020 0000 0000 0000 0000 0000 0000 0000 0000*0040000 aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa*0050000 0000 0000 0000 0000 0000 0000 0000 0000*4000000总结上述内容是依照个人的实际体会来整理出来的, 期望能够为大家提供一个借鉴的视角, 同时, 也诚挚地恳请各位观众朋友, 多多地对脚本之家这个平台给予关注与支持。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号