From c44493077a1ac30c9c0d0420a4d2ee72cdebc6a4 Mon Sep 17 00:00:00 2001 From: Nicolo Fusi Date: Mon, 18 Mar 2013 14:31:26 +0000 Subject: [PATCH] made parallel optimize_restart responsive to ctrl+c --- GPy/core/model.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/GPy/core/model.py b/GPy/core/model.py index 703e615d..7a8a3429 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -188,19 +188,23 @@ class model(parameterised): """ - initial_parameters = self._get_params_transformed() if parallel: - jobs = [] - pool = mp.Pool(processes=num_processes) - for i in range(Nrestarts): - self.randomize() - job = pool.apply_async(opt_wrapper, args = (self,), kwds = kwargs) - jobs.append(job) + try: + jobs = [] + pool = mp.Pool(processes=num_processes) + for i in range(Nrestarts): + self.randomize() + job = pool.apply_async(opt_wrapper, args = (self,), kwds = kwargs) + jobs.append(job) - pool.close() # signal that no more data coming in - pool.join() # wait for all the tasks to complete + pool.close() # signal that no more data coming in + pool.join() # wait for all the tasks to complete + except KeyboardInterrupt: + print "Ctrl+c received, terminating and joining pool." + pool.terminate() + pool.join() for i in range(Nrestarts): try: