{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 内存映射" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Numpy** 有对内存映射的支持。\n", "\n", "内存映射也是一种处理文件的方法,主要的函数有:\n", "\n", "- `memmap`\n", "- `frombuffer`\n", "- `ndarray constructor`\n", "\n", "内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。\n", "\n", "使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## memmap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " memmap(filename,\n", " dtype=uint8,\n", " mode='r+'\n", " offset=0\n", " shape=None\n", " order=0)\n", "\n", "`mode` 表示文件被打开的类型: \n", "\n", "- `r` 只读\n", "- `c` 复制+写,但是不改变源文件\n", "- `r+` 读写,使用 `flush` 方法会将更改的内容写入文件\n", "- `w+` 写,如果存在则将数据覆盖\n", "\n", "`offset` 表示从第几个位置开始。" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }