DAWG(DAFSAs)的纯Python读取器,由dawgdic C++库或DAWG Python扩展创建。
项目描述
DAWG-Python
此纯Python软件包提供了对由dawgdic C++库和DAWG Python软件包创建的文件只读访问。
此软件包无法创建DAWG。它与由dawgdic C++库或DAWG Python扩展模块构建的DAWG一起工作。DAWG-Python的主要目的是在不要求编译扩展的情况下提供对DAWG的访问。它在PyPy下也相当快(请参阅基准测试)。
安装
pip install DAWG-Python
用法
当可能时,DAWG-Python的目标是与DAWG具有API和二进制兼容性。
首先,您必须使用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相同。
当前限制
此软件包无法创建DAWG;
DAWG的所有限制都适用。
欢迎贡献!
贡献
开发在github进行:[DAWG-Python](https://github.com/kmike/DAWG-Python) Issue跟踪器:[DAWG-Python issues](https://github.com/kmike/DAWG-Python/issues)
请随意提交想法、错误或Pull请求。
运行测试和基准测试
确保安装并运行tox
$ tox
从源代码检出。在python 2.6、2.7、3.2、3.3、3.4和PyPy >= 1.9下测试应该通过。
为了运行基准测试,输入
$ tox -c bench.ini -e pypy
这将在PyPy下运行基准测试(在CPython下大约慢50倍)。
许可证
本软件包采用MIT许可证。
更改
0.7.2 (2015-04-18)
轻微的速度提升;
bitbucket镜像不再维护。
0.7.1 (2014-06-05)
切换到setuptools;
上传wheel到pypi;
检查Python 3.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。这使得BytesDAWG和RecordDAWG项按字母顺序排列。
为了读取使用DAWG < 0.5版本创建的BytesDAWG或RecordDAWG,请使用payload_separator构造函数参数
>>> BytesDAWG(payload_separator=b'\xff').load('old.dawg')
0.3.1 (2012-10-01)
空DAWG的错误已修复。
0.3 (2012-09-26)
iterkeys和iteritems方法。
0.2 (2012-09-24)
prefixes支持。
0.1 (2012-09-20)
初始发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分布
构建分布
DAWG-Python-0.7.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a5e3286e6261cca02f205cfd5516a7ab10190fa30c51c28d345808f595e3421 |
|
MD5 | 25835be7d559de75dde5e28a254427ad |
|
BLAKE2b-256 | b833fd52c8ec329641a7730fad662ba3f29f98c45e4bea552cceee569b00c915 |
DAWG_Python-0.7.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4941d5df081b8d6fcb4597e073a9f60d5c1ccc9d17cd733e8744d7ecfec94ef3 |
|
MD5 | 2a9b8d02b872ac723588542e3542d1df |
|
BLAKE2b-256 | 6a84ff1ce2071d4c650ec85745766c0047ccc3b5036f1d03559fd46bb38b5eeb |