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 returnn.util.basic 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': from returnn.theano.server import Server global server server = Server(config) else: init_engine(devices)
# noinspection PyShadowingBuiltins def print(*args, **kwargs): """ ``print`` replacement. :param args: :param kwargs: """ if not Quiet: _orig_print(*args, **kwargs) print("RETURNN SprintControl[pid %i] Python module load" % os.getpid()) rnn.init_better_exchook() debug.init_faulthandler(sigusr1_chain=True) # Sprint also handles SIGUSR1. rnn.init_thread_join_hack() # Start Sprint PythonControl interface. { def init(name, reference, config, sprint_unit=None, version_number=None, callback=None, **kwargs): """ This will be called by Sprint PythonControl. But we also call it ourselves e.g. in getSegmentList() and SprintNnPythonLayer.