Example #1
0
            else:
                # Refresh the experiment
                logger.debug("Found manager for experiment %s" % experiment.id)
                managers[experiment.id].experiment = experiment

        # Check every one of them
        logger.debug("Checking experiment managers. There are %d of them. pid: %d" % (len(managers), os.getpid()))
        managers_to_delete = []
        for exp_id, manager in managers.items():
            # Refresh the experiment first
            manager.refresh_experiment()

            # Manager experiment is gone, we dont need it anymore
            if not manager.experiment:
                managers_to_delete.append(exp_id)
            elif manager.finished():
                logger.debug('Manager for experiment id: %s is done' % exp_id)
                managers_to_delete.append(exp_id)
            else:
                logger.debug('Commission simulations as needed for experiment id: %s' % exp_id)
                n_commissioned_sims = manager.commission_simulations()
                logger.debug('Experiment done (re)commissioning %d simulation(s)' % n_commissioned_sims)

        # Delete the managers that needs to be deleted
        for exp_id in managers_to_delete:
            del managers[exp_id]

        # No more active managers -> Exit if our analyzer threads are done
        # Do not use len() to not block anything
        if not managers: break
        '''Signal the run() to shutdown before joining'''

        self.alive.clear()
        super(MD5Cracker, self).join(timeout)

# Graceful clean up
def cleanup():
    for worker in workers:
        worker.join()
atexit.register(cleanup)

# init vars
workers = []
work_queue = Manager().Queue()
global_namespace = Manager().Namespace()
global_namespace.finished = False
global_namespace.count = 0

# Set up Processes
number_of_processes = 16
for i in range(number_of_processes):
    worker = MD5Cracker(work_queue, global_namespace)
    worker.start()
    workers.append(worker)

print "Target Hash: {}".format(hash)

maxChars = 13
while_count = 1
for baseWidth in range(1, maxChars + 1):