Visitor.set_size_discriminator(size_discriminator) if request_delay: Visitor.set_delay(request_delay) thread_pool = [] for number in range(0, threads + 1): v = Visitor(number, payload, manager.get_results_queue()) thread_pool.append(v) v.daemon = True v.start() while not payload.queue.empty(): try: time.sleep(0.1) except KeyboardInterrupt: print "\nWaiting for threads to stop..." manager.dead = True payload.flush() break for t in thread_pool: t.join() manager.dead = True manager.get_results_queue().join() sys.stdout.write('\r') sys.stdout.write("\x1b[0K") time.sleep(0.5) sys.stdout.write("Work done" + os.linesep) sys.stdout.flush()