From b880877e7dd7f24a739c7ae6f6db52f9730d68cb Mon Sep 17 00:00:00 2001 From: IDex Date: Mon, 19 Feb 2018 21:09:39 +0200 Subject: [PATCH] Made .fit() handle KeyboardInterrupt gracefully (#96) This allows user to prematurely interrupt an ongoing .fit() without losing all the progress. --- hpsklearn/estimator.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/hpsklearn/estimator.py b/hpsklearn/estimator.py index ff657746..c63c062e 100644 --- a/hpsklearn/estimator.py +++ b/hpsklearn/estimator.py @@ -741,13 +741,16 @@ def fit(self, X, y, EX_list=None, adjusted_max_evals = (self.max_evals if not warm_start else len(self.trials.trials) + self.max_evals) while len(self.trials.trials) < adjusted_max_evals: - increment = min(self.fit_increment, - adjusted_max_evals - len(self.trials.trials)) - fit_iter.send(increment) - if filename is not None: - with open(filename, 'wb') as dump_file: - self.info('---> dumping trials to', filename) - pickle.dump(self.trials, dump_file) + try: + increment = min(self.fit_increment, + adjusted_max_evals - len(self.trials.trials)) + fit_iter.send(increment) + if filename is not None: + with open(filename, 'wb') as dump_file: + self.info('---> dumping trials to', filename) + pickle.dump(self.trials, dump_file) + except KeyboardInterrupt: + break self.retrain_best_model_on_full_data(X, y, EX_list, weights)