def _execute_dispatched_function(client: skein.ApplicationClient, experiment: Experiment) -> MonitoredThread: task_type, task_id = cluster.get_task_description() _logger.info(f"Starting execution {task_type}:{task_id}") thread = MonitoredThread(name=f"{task_type}:{task_id}", target=_gen_monitored_train_and_evaluate(client), args=tuple(experiment), daemon=True) thread.start() task = cluster.get_task() event.start_event(client, task) return thread
def _execute_dispatched_function( client: skein.ApplicationClient, experiment: Union[Experiment, KerasExperiment]) -> MonitoredThread: task_type, task_id = get_task_description() _logger.info(f"Starting execution {task_type}:{task_id}") if isinstance(experiment, Experiment): thread = MonitoredThread( name=f"{task_type}:{task_id}", target=_gen_monitored_train_and_evaluate(client), args=tuple(experiment), daemon=True) elif isinstance(experiment, KerasExperiment): raise ValueError( "KerasExperiment using parameter strategy is unsupported") else: raise ValueError( "experiment must be an Experiment or a KerasExperiment") thread.start() task = get_task() event.start_event(client, task) return thread
def test_monitored_thread(): def fail(): raise RuntimeError(42) thread = MonitoredThread(target=fail) thread.start() thread.join() assert isinstance(thread.exception, RuntimeError) assert thread.exception.args == (42, )