Skip to main content

由python实现的一系列高效的过滤器算法实现

pypi python implementation wheel license

  • 基于redis和memory
  • 低时间复杂度

Useage

from pyfilters import MemoryBloomFilter

bf = MemoryBloomFilter(10000, 0.00001)
for i in range(1000):
    bf.add(i)
for i in range(1000):
    assert i in bf
assert 1001 not in bf

Advanced usage

  • 计数形布隆过滤器,可以删除数据
from pyfilters import CountMemoryBloomFilter

cbf = CountMemoryBloomFilter(10000, 0.00001)
for i in range(1000):
    cbf.add(i)
for i in range(1000):
    assert i in cbf
cbf.remove(1)
assert 1 not in cbf
  • redis分块布隆过滤器,避免单key过大
from redis import Redis
from pyfilters import ChunkedRedisBloomFilter

bf = ChunkedRedisBloomFilter(Redis(), "test_bloomfilter", 10000, 0.00001)
for i in range(1000):
    bf.add(i)
for i in range(1000):
    assert i in bf
assert 1001 not in bf
  • 分块计数形redis布隆过滤器,可以删除数据
from redis import Redis
from pyfilters import CountRedisBloomFilter

rcbf = CountRedisBloomFilter(Redis(), "test_countbloomfilter", 10000, 0.00001)
for i in range(1000):
    rcbf.add(i)
for i in range(1000):
    assert i in rcbf
rcbf.remove(1)
assert 1 not in rcbf

asyncio兼容

在pyfilters.asyncio包

import asyncio

from redis.asyncio import Redis
from pyfilters.asyncio import CountRedisBloomFilter

async def main():
    rcbf = CountRedisBloomFilter(Redis(), "test_countbloomfilter", 10000, 0.00001)
    for i in range(1000):
        await rcbf.add(i)
    for i in range(1000):
        assert await rcbf.contains(i)
    await rcbf.remove(1)
    assert not await rcbf.contains(1)

asyncio.run(main())

Metadata

Release files for pyfilters 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyfilters 0.1.5
File Size Uploaded
pyfilters-0.1.5.tar.gz 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyfilters 0.1.5
File Interpreter ABI Platform
pyfilters-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 20.9 kB

Release files / pyfilters-0.1.5.tar.gz

Download URL pyfilters-0.1.5.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
eaafe5948e0cd0c26e9dc26da38987d26d4313f4adcacd6daca640cc206d98c4
BLAKE2b-256 checksum
How to use checksums
e726c9692e1f65a17145e55eceaca7b08710bd314b8ccd9e46432ca735750d6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release files / pyfilters-0.1.5-py3-none-any.whl

Download URL pyfilters-0.1.5-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17473c37a1d1266fd9db6be61daaf49a49501d0a6ed813fb8cacbb17e7c876c8
BLAKE2b-256 checksum
How to use checksums
208e82e769cac03199c3a69bb8f1d4c6a6d65b2cc15a92aa5bb3d03b95b9d9db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page