bitmap去重與布隆過濾器原理
1. bitmap去重
通過一個比特位來存一個地址,占用內存很小
2. 布隆過濾器
BloomFilter 會開辟一個m位的bitArray(位數組),開始所有數據全部置 0 。當一個元素過來時,能過多個哈希函數(h1,h2,h3....)計算不同的在哈希值,並通過哈希值找到對應的bitArray下標處,將里面的值 0 置為 1 。
Python中使用布隆過濾器
#python3.6 安裝 #需要先安裝bitarray pip3 install bitarray-0.8.1-cp36-cp36m-win_amd64.whl(pybloom_live依賴這個包,需要先安裝) #下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ pip3 install pybloom_live
示例一
#ScalableBloomFilter 可以自動擴容 from pybloom_live import ScalableBloomFilter bloom = ScalableBloomFilter(initial_capacity=100, error_rate=0.001, mode=ScalableBloomFilter.LARGE_SET_GROWTH) url = "www.cnblogs.com" url2 = "www.baidu.com" bloom.add(url) print(url in bloom) print(url2 in bloom)
示例二
#BloomFilter 是定長的 from pybloom_live import BloomFilter bf = BloomFilter(capacity=1000) url='www.baidu.com' bf.add(url) print(url in bf) print("www.cnblogs.com" in bf)