import threading import random def hammer_dict(d={}): global running while running: d[key] = 1 try: del d[key] except KeyError: pass except: running = False raise class Key: def __hash__(self): for i in range(random.randint(0, 20)): pass print('.', end='') return 0 key = Key() num_threads = 20 threads = [threading.Thread(target=hammer_dict) for x in range(num_threads)] running = True for t in threads: t.start() for t in threads: t.join()