Example #1
0
        # 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

        time.sleep(10)
        count += 1

logger.debug('No more work to do, Overseer pid: %d exiting...' % os.getpid())