コード例 #1
0
ファイル: runner.py プロジェクト: icarus-sim/icarus
def run(config_file, output, config_override):
    """
    Run function. It starts the simulator.
    experiments

    Parameters
    ----------
    config : str
        Path of the configuration file
    output : str
        The file name where results will be saved
    config_override : dict, optional
        Configuration parameters overriding parameters in the file
    """
    # Read settings from file and save them in icarus.conf.settings
    settings = Settings()
    settings.read_from(config_file)
    if config_override:
        for k, v in config_override.items():
            try:
                v = eval(v)
            except NameError:
                pass
            settings.set(k, v)
    # Config logger
    config_logging(settings.LOG_LEVEL if "LOG_LEVEL" in settings else "INFO")
    # Validate settings
    _validate_settings(settings, freeze=True)
    # set up orchestration
    orch = Orchestrator(settings)
    for sig in (
            signal.SIGTERM,
            signal.SIGINT,
            signal.SIGHUP,
            signal.SIGQUIT,
            signal.SIGABRT,
    ):
        signal.signal(sig, functools.partial(handler, settings, orch, output))
    logger.info("Launching orchestrator")
    orch.run()
    logger.info("Orchestrator finished")
    results = orch.results
    RESULTS_WRITER[settings.RESULTS_FORMAT](results, output)
    logger.info("Saved results to file %s" % os.path.abspath(output))