import logging logger = logging.Logger('ipcluster') logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler(sys.stdout)) ip = get_ipython() config = ip.config profile_dir = ip.profile_dir.location # aka ipython_dir/profile_{name} from IPython.parallel.apps.launcher import LocalControllerLauncher, LocalEngineLauncher import time engines = [] def add_engines(n, delay=0.1): """start n engines""" for i in range(n): e = LocalEngineLauncher(config=config, log=logger, profile_dir=profile_dir) engines.append(e) e.start() if i + 1 < n: time.sleep(delay) def cleanup_engines(): [ e.stop() for e in engines ] controller = LocalControllerLauncher(config=config, log=logger, profile_dir=profile_dir) controller.start() add_engines(5) from IPython import parallel rc = parallel.Client() rc.ids rc[:]['a'] = 5 rc[:]['a'] engines[0].stop() rc.ids add_engines(3) rc.ids rc.shutdown(hub=True)