def init(config_filename=None, command_line_options=(), config_updates=None, extra_greeting=None): """ :param str|None config_filename: :param tuple[str]|list[str]|None command_line_options: e.g. sys.argv[1:] :param dict[str]|None config_updates: see :func:`init_config` :param str|None extra_greeting: """ init_better_exchook() init_thread_join_hack() init_config(config_filename=config_filename, command_line_options=command_line_options, extra_updates=config_updates) if config.bool("patch_atfork", False): from Util import maybe_restart_returnn_with_atfork_patch maybe_restart_returnn_with_atfork_patch() init_log() if extra_greeting: print(extra_greeting, file=log.v1) returnn_greeting(config_filename=config_filename, command_line_options=command_line_options) init_faulthandler() init_backend_engine() if BackendEngine.is_theano_selected(): if config.value('task', 'train') == "theano_graph": config.set("multiprocessing", False) if config.bool('multiprocessing', True): init_cuda_not_in_main_proc_check() if config.bool('ipython', False): init_ipython_kernel() init_config_json_network() devices = init_theano_devices() if need_data(): init_data() print_task_properties(devices) if config.value('task', 'train') == 'server': import Server global server server = Server.Server(config) else: init_engine(devices)