滑动窗口内存映射管理器的纯python实现
smmap2的Python项目详细描述
##动机
当以类似于随机访问的方式从许多可能很大的文件中读取时,使用内存映射通常是最快和最有效的。
尽管内存映射有许多优点,但它们表示的系统资源非常有限,因为每个映射使用一个文件描述符,每个进程的文件描述符数量有限。在32位系统上,一次可以映射的内存量自然局限于理论上的4GB内存,这对于某些应用程序来说可能不够。
##限制
- 系统资源(文件句柄)可能泄漏!这是因为库作者依赖于确定性的析构函数。
- 存储器访问按设计为只读。
##概述
[![生成状态](https://travis-ci.org/gitpython-developers/smmap.svg?branch=master)](https://travis-ci.org/gitpython-developers/smmap) [![生成状态](https://ci.appveyor.com/api/projects/status/kuws846av5lvmugo?svg=true&passingText=windows%20OK&failingText=windows%20failed)](https://ci.appveyor.com/project/Byron/smmap) [![覆盖状态](https://coveralls.io/repos/gitpython-developers/smmap/badge.png)](https://coveralls.io/r/gitpython-developers/smmap) [![发布状态](http://www.issuestats.com/github/gitpython-developers/smmap/badge/pr)](http://www.issuestats.com/github/gitpython-developers/smmap) [![发布统计信息](http://www.issuestats.com/github/gitpython-developers/smmap/badge/issue)](http://www.issuestats.com/github/gitpython-developers/smmap)
smmap在mmap周围包装了一个接口,并跟踪映射的文件以及使用它的客户机数量。如果系统资源不足,或者达到内存限制,它将自动卸载未使用的映射以允许继续操作。
为了允许在32位系统上处理大文件,它只允许映射文件的一部分。一旦用户读取超出映射区域的内容,smmap将自动映射下一个所需区域,并使用lru算法卸载未使用的区域。
在python 2.5之前的python实现中,该接口还可以处理缺少的offset参数。
尽管库可以最有效地与它的本机接口一起使用,但是提供了一个缓冲区实现,以将这些细节隐藏在一个简单的类似字符串的接口后面。
对于性能关键的64位应用程序,提供了内存映射的简化版本,该版本始终映射整个文件,但仍提供按需卸载未使用映射的好处。
##先决条件
- python 2.7或3.4+
- OSX、Windows或Linux
该软件包在前面提到的所有配置上都进行了测试。
##安装smmap
[![文档状态](https://readthedocs.org/projects/smmap/badge/?version=latest)](https://readthedocs.org/projects/smmap/?徽章=最新)
使用[pip](http://www.pip-installer.org/en/latest)程序安装smmap最简单:
`bash $ pip install smmap `
由于该命令将在您各自的python发行版中安装smmap,因此您很可能需要根权限来授权所需的更改。
如果您下载了源文件,则可以通过运行setup.py脚本来安装包:
`bash $ python setup.py install `
建议查看使用指南,以简要介绍不同的数据库实现。
##主页和链接
该项目位于github上的https://github.com/gitpython-developers/smmap。
最新的源代码也可以从github克隆:
- git://github.com/gitpython-developers/smmap.git
要获得支持,请使用git python邮件列表:
可以在github上提交问题:
##许可证信息
smmap根据新的bsd许可证获得许可。