def debug_primes():
'''
Generate an infinite stream of primes and log out the size of
the sieve as it increases
'''
max_sieve_size = 0
sieve_size = 0
sieve = defaultdict(list)
k = 2
while True:
k_factors = sieve.get(k)
if k_factors:
del sieve[k]
for f in k_factors:
sieve[f+k].append(f)
sieve_size = getsizeof(sieve)
if sieve_size > max_sieve_size:
max_sieve_size = sieve_size
print('{}\tincrease: {} bytes'.format(k, max_sieve_size))
else:
yield k
sieve[k ** 2] = [k]
k += 1
评论列表
文章目录