(1)安装相应的模块,不行就到github上找,然后下载下来
解压后放到对应的位置
执行 pip install .
剩下的就是如何引用和修改成自己想要的样子了。
布隆过滤器的主要作用是使得查找很快(原理是用的哈希查找),缺点是构建很慢。
具体运用:
由于每个文件的哈希值是不一样的;每个病毒的哈希值也是不一样的;
所有可以通过哈希值对比,查找出网盘里的重复文件;系统中的病毒也是差不多的原理
#简单用法
import hashlib
import time
from bloom_filter import BloomFilter
bm = BloomFilter(max_elements=5000000,error_rate=0.0001)
for i in range(5000000):
if i%1000000 ==0:
print(i)
#病毒查找,可以用这个算法
md5 = hashlib.md5()
md5.update(str(i).encode("utf-8"))
bm.add(md5.hexdigest())
# bm.add(i)
print("ok")
star = time.time()
md5 = hashlib.md5()
md5.update(str(4873421).encode("utf-8"))
print(md5.hexdigest() in bm)
# print(4873421 in bm)
end = time.time()
print(end - start)
模块化使用:
from bloom_filter import BloomFilter
have_met = BloomFilter()
def have_i_met(name):
met = name in have_met
print('Have I met {} before: {}'.format(name, met))
def meet(name):
have_met.add(name)
print('Hello, {}'.format(name))
for name in ['Harry', 'Larry', 'Moe']:
have_i_met(name)
meet(name)
have_i_met(name)
(2)深入运用,做为文件过滤器
略。
(3)大型爬虫运用,只有当百度、360、google等这么大型的搜索,才需要用到bloom,其他的小打小闹是不需要考虑这个东西的。