# 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())