#!/usr/bin/env python3 """Demonstrate usage.""" import bloom_filter_mod # These replicate the problem # n = 10 # m = 3 # n = 4 # m = 1 n = 10 m = 1 for means, filename in ( # These 3 are all in-memory as well as partially file seek (if needed). Somewhat persistent. Works fully. (f'part in memory, part file seek: {n // 2}', ('bloom-filter.bin', n // 2)), # works fully. ('part in memory, part file seek: 10000', ('bloom-filter.bin', 10000)), # works fully ('part in memory, part file seek: 0', ('bloom-filter.bin', 0)), # works fully # File seek alone: persistent. Works fully. ('file seek', 'bloom-filter.bin'), # Wholly in-memory. Not persistent. Works fully. ('in memory', None), # mmap alone: persistent. Works fully. ('mmap', ('bloom-filter.bin', -1)), ): bloom_filter = bloom_filter_mod.Bloom_filter( ideal_num_elements_n=n * 2, error_rate_p=0.01, filename=filename, start_fresh=True, ) for i in range(0, n * 2 - m, 2): bloom_filter.add(i) in_count = 0 for i in range(0, n * 2): if i in bloom_filter: in_count += 1 bloom_filter.close() print(f'in_count for {means:40}: {in_count}')