"""Mock workflow manager. This is a mock work manager whose submitted 'jobs' simply consist of executing a python string. What we want is to see the implementation of the ipython controller part. """ from __future__ import print_function import atexit import sys from subprocess import Popen def cleanup(controller, engines): """Cleanup routine to shut down all subprocesses we opened.""" import signal, time print('Starting cleanup') print('Stopping engines...') for e in engines: e.send_signal(signal.SIGINT) print('Stopping controller...') # so it can shut down its queues controller.send_signal(signal.SIGINT) time.sleep(0.1) print('Killing controller...') controller.kill() print('Cleanup done') if __name__ == '__main__': # Start controller in separate process cont = Popen(['python', '-m', 'IPython.parallel.ipcontrollerapp']) print('Started controller') # "Submit jobs" eng = [] for i in range(4): eng.append(Popen(['python', 'job_wrapper.py','x=%s' % i])) # Ensure that all subpro atexit.register(lambda : cleanup(cont, eng))