纯C++的Python阅读器(由Python库或Python Python扩展创建)。

DAWG-Python的Python项目详细描述


曙光Python

https://travis-ci.org/kmike/DAWG-Python.png?branch=masterhttps://coveralls.io/repos/kmike/DAWG-Python/badge.png?branch=master

这个纯python包提供对文件的只读访问 由dawgdic c++库和DAWGpython程序包创建。

此包无法创建DAWG。它与由 {a3} c++库或DAWG python扩展模块。主要目的 dawg的python是提供对dawg的访问,而不需要编译 分机。它在pypy下也相当快(见基准)。

安装

pip安装dawg python

用法

dawg python的目标是与api和二进制兼容 在可能的情况下使用DAWG

首先,必须使用DAWG模块创建dawg:

import dawg
d = dawg.DAWG(data)
d.save('words.dawg')

然后这个dawg可以在不需要c扩展的情况下加载:

import dawg_python
d = dawg_python.DAWG().load('words.dawg')

详细用法请参阅DAWG文档。一些特点 (像构造函数参数或save方法)是有意的 不支持。

基准

基准测试结果(100k个Unicode单词,整数值(单词长度), Pypy 1.9,MacBook Air i5 1.8 GHz):

dict __getitem__ (hits):        11.090M ops/sec
DAWG __getitem__ (hits):        not supported
BytesDAWG __getitem__ (hits):   0.493M ops/sec
RecordDAWG __getitem__ (hits):  0.376M ops/sec

dict get() (hits):              10.127M ops/sec
DAWG get() (hits):              not supported
BytesDAWG get() (hits):         0.481M ops/sec
RecordDAWG get() (hits):        0.402M ops/sec
dict get() (misses):            14.885M ops/sec
DAWG get() (misses):            not supported
BytesDAWG get() (misses):       1.259M ops/sec
RecordDAWG get() (misses):      1.337M ops/sec

dict __contains__ (hits):           11.100M ops/sec
DAWG __contains__ (hits):           1.317M ops/sec
BytesDAWG __contains__ (hits):      1.107M ops/sec
RecordDAWG __contains__ (hits):     1.095M ops/sec

dict __contains__ (misses):         10.567M ops/sec
DAWG __contains__ (misses):         1.902M ops/sec
BytesDAWG __contains__ (misses):    1.873M ops/sec
RecordDAWG __contains__ (misses):   1.862M ops/sec

dict items():           44.401 ops/sec
DAWG items():           not supported
BytesDAWG items():      3.226 ops/sec
RecordDAWG items():     2.987 ops/sec
dict keys():            426.250 ops/sec
DAWG keys():            not supported
BytesDAWG keys():       6.050 ops/sec
RecordDAWG keys():      6.363 ops/sec

DAWG.prefixes (hits):    0.756M ops/sec
DAWG.prefixes (mixed):   1.965M ops/sec
DAWG.prefixes (misses):  1.773M ops/sec

RecordDAWG.keys(prefix="xxx"), avg_len(res)==415:       1.429K ops/sec
RecordDAWG.keys(prefix="xxxxx"), avg_len(res)==17:      36.994K ops/sec
RecordDAWG.keys(prefix="xxxxxxxx"), avg_len(res)==3:    121.897K ops/sec
RecordDAWG.keys(prefix="xxxxx..xx"), avg_len(res)==1.4: 265.015K ops/sec
RecordDAWG.keys(prefix="xxx"), NON_EXISTING:            2450.898K ops/sec

根据cpython的预测,速度会慢50倍。 dawg python的内存消耗应该与DAWG相同。

当前限制

  • 此软件包无法创建dawgs;
  • 所有DAWG的限制都适用。

欢迎投稿!

贡献

在github进行开发:https://github.com/kmike/DAWG-Python 问题跟踪器:https://github.com/kmike/DAWG-Python/issues

请随意提交想法、错误或请求。

运行测试和基准

确保tox已安装并运行

$ tox

从源签出。测试应该在Python2.6、2.7、3.2、3.3下通过, 3.4和pypy>;=1.9。

要运行基准测试,请键入

$ tox -c bench.ini -e pypy

这在pypy下运行基准测试(在cpython下大约慢50倍)。

作者和贡献者

算法是由Susumu Yata和贡献者从^ {A3} C++库中提取的。

许可证

这个软件包是根据麻省理工学院的许可证授权的。

更改

0.7.2(2015-04-18)

  • 轻微加速;
  • 不再维护Bitbucket镜像。

0.7.1(2014-06-05)

  • 切换到setuptools;
  • 上载轮子tp pypi;
  • 检查Python3.4兼容性。

0.7(2013-10-13)

实现了intdawg和intcompletiondawg。

0.6(2013-03-23)

在内部使用较少共享的状态。这将修复线程安全漏洞 使iterkeys/iteritems重新生效。

0.5.1(2013-03-01)

内部调整:内存使用减少;速度更快, 有点慢。

0.5(2012-10-08)

更新存储方案以匹配dawg==0.5。这使得 BytesDAWGRecordDAWG项的字母顺序。

为了读取用创建的BytesDAWGRecordDAWG。 dawg<;0.5的版本使用payload_separator构造函数参数:

>>> BytesDAWG(payload_separator=b'\xff').load('old.dawg')

0.3.1(2012-10-01)

有空道具的虫子是固定的。

0.3(2012-09-26)

  • iterkeysiteritems方法。

0.2(2012-09-24)

prefixes支持。

0.1(2012-09-20)

初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中char的用途   swing修复,以便显示可以同时显示十进制数和整数   java给定一个场景,找到拥有的JFXPanel   java JPA 2标准获取路径导航   java如何用JUnit测试这个类?   JSF中的java请求作用域   Spring云Zuul代理背后的java Spring OAuth授权服务器   java限制聚合返回的存储桶大小   java如何在安卓应用程序中请求超级su权限   防止超级关键字的java Checkstyle规则   java 安卓。应用程序。应用程序无法强制转换到安卓。应用程序。在回收器适配器中使用FragmentManager时的活动   使用Java的Twitter广告API   切换到4.0.1版本后,java“JavaMailSenderImpl无法解析为类型”   java没有getter方法可用于名称下bean的属性   java 0/1背包堆空间   java我无法使用断点进行调试   Jar文件名表单java代码   java调用从扩展活动的MainActivity类扩展片段的类片段