Datamaran 的 Pybloom fork 适配 Python3
项目描述
dm_pybloom
=======
.. 图片:: https://travis-ci.org/jaybaird/python-bloomfilter.svg?branch=master
:target: https://travis-ci.org/jaybaird/python -bloomfilter
``dm_pybloom`` 是一个模块,它包括一个 Bloom Filter 数据结构以及可伸缩 Bloom Filters 的实现
,如:
P. Almeida、C.Baquero、N. Preguiça、D. Hutchison、Scalable Bloom Filters、
( GLOBECOM 2007), IEEE, 2007。
如果您了解需要提前
留出多少位来存储整个集合,那么布隆过滤器非常有用。可扩展的布隆过滤器允许您的布隆过滤
器位作为误报概率和大小的函数而增长。
过滤器在容量为:M * ((ln 2 ^ 2) / abs(ln p)) 时为“满”,其中 M
是位数,p 是误报概率。当
达到容量时,创建一个新的过滤器,它比上一个过滤器更大
,误报概率更小,散列
函数数量更多。
.. code-block:: python
>>> from dm_pybloom import BloomFilter
>>> f = BloomFilter(capacity=1000, error_rate=0.001)
>>> [f.add(x) for x in range(10)]
[False , 假, 假, 假, 假, 假, 假, 假, 假, 假]
>>> all([(x in f) for x in range(10)])
True
>>> 10 in f
False
>>> 5 in f
True
>>> f = BloomFilter(容量=1000, error_rate=0.
>>> for i in xrange(0, f.capacity):
... _ = f.add(i)
>>> (1.0 - (len(f) / float(f.capacity))) <= f. error_rate + 2e-18
True
>>> from dm_pybloom import ScalableBloomFilter
>>> sbf = ScalableBloomFilter(mode=ScalableBloomFilter.SMALL_SET_GROWTH)
>>> count = 10000
>>> for i in xrange(0, count):
... _ = sbf.add(i)
...
>>> (1.0 - (len(sbf) / float(count))) <= sbf.error_rate + 2e-18
True
# len(sbf) 可能不等于整个输入长度。0.01% 的误差远
低于默认的 0.1% 误差阈值。随着容量的增加,
#error 将接近 0.1%。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
dm_pybloom-3.0.4.tar.gz
(9.3 kB
查看哈希)
内置分布
dm_pybloom-3.0.4-py2.py3-none-any.whl
(10.7 kB
查看哈希)
关
dm_pybloom -3.0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a98fbd293158b3412696d9585044fb422330b51d6056ed87acdd46158ac15bdb |
|
MD5 | 7ca03bc999a97ce168b2be08d4781c19 |
|
布莱克2-256 | 6e272e1d03cc38f0cb89149a47702e97895d19ac4d29919c25526e7f7b26db12 |
关
dm_pybloom -3.0.4-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e9be7ca1d6b6e2bf37dff737b5765381da34431d6c376f4b1d089d0d83d84a92 |
|
MD5 | 39ec85b6b0c42cba21a7f9256951c17d |
|
布莱克2-256 | 25650b7828b36aca661594c3765e37409c5d2ed9a523c5e8fbac055f99a73197 |