python小点心--内存文件映射

          内存文件映射,这东西听起来很高大上,其实呢,很简单,就是把一个文件映射到内存中,你可以认为,映射后,文件在内存中,访问速度是极快的。windows 64位环境下,最大可以映射4G的文件。说是映射,并不是真的把文件都放入到内存中,否则就不要叫映射了,而是叫加载。我们访问的时候,访问到哪里,哪里的数据就被映射到内存中,所以不会占用太多的内存,却有着内存级别的访问速度


          python的 mmap模块提供了操作内存文件映射的各种能力。

          直接看代码吧


          

#coding=utf-8
'''
Created on 2016-3-6

@author: kwsy
'''
import mmap
import os 
import struct


def memory_map(filename,access=mmap.ACCESS_WRITE):
    size = os.path.getsize(filename)
    fd = os.open(filename,os.O_RDWR)
    return mmap.mmap(fd,size,access=access)

def init_file(filename,size):
    #最大2的32次方减1
    with open(filename,'wb') as f:
        f.seek(size-1)
        f.write(b'\x00')
def write():
    filename = 'data'
    init_file(filename,100)
    m = memory_map('data')
    text = '很好'
    s = struct.pack('ii6s',3,5,text)
    print type(s)
    m[:len(s)] = s
    print len(s)
    m.close()

def read():
    m = memory_map('data')
    str =  m[0:14]
    a1,a2,text=struct.unpack('ii6s',str)
    print len(text)
    print a1,a2,text
    
if __name__ == '__main__':
    write()
    read()

          咱们先创建一个100byte大小的文件,然后呢,向里面写入二进制数据,我们可以像操作字符串那样来操作m,它提供了各种切片操作,而且对其直接赋值就相当于写文件了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值