##// END OF EJS Templates
Add little soma workflow example
Fernando Perez -
Show More
@@ -0,0 +1,3 b''
1 from IPython.zmq.parallel.client import Client
2
3 client = Client()
@@ -0,0 +1,21 b''
1 #!/usr/bin/env python
2 """Python wrapper around a submitted workflow job.
3
4 In reality this would be a more sophisticated script, here we only illustrate
5 the basic idea by considering that a submitted 'job' is a Python string to be
6 executed.
7 """
8
9 import sys
10
11 argv = sys.argv
12
13 from IPython.zmq.parallel.engine import main
14
15 ns = {}
16
17 # job
18 exec sys.argv[1] in ns
19
20 # start engine with job namespace
21 main([], user_ns=ns)
@@ -0,0 +1,44 b''
1 """Mock workflow manager.
2
3 This is a mock work manager whose submitted 'jobs' simply consist of executing
4 a python string. What we want is to see the implementation of the ipython
5 controller part.
6 """
7
8 from __future__ import print_function
9
10 import atexit
11 import sys
12
13 from subprocess import Popen
14
15 def cleanup(controller, engines):
16 """Cleanup routine to shut down all subprocesses we opened."""
17 import signal, time
18
19 print('Starting cleanup')
20 print('Stopping engines...')
21 for e in engines:
22 e.send_signal(signal.SIGINT)
23 print('Stopping controller...')
24 # so it can shut down its queues
25 controller.send_signal(signal.SIGINT)
26 time.sleep(0.1)
27 print('Killing controller...')
28 controller.kill()
29 print('Cleanup done')
30
31
32 if __name__ == '__main__':
33
34 # Start controller in separate process
35 cont = Popen(['python', '-m', 'IPython.zmq.parallel.controller'])
36 print('Started controller')
37
38 # "Submit jobs"
39 eng = []
40 for i in range(4):
41 eng.append(Popen(['python', 'job_wrapper.py','x=%s' % i]))
42
43 # Ensure that all subpro
44 atexit.register(lambda : cleanup(cont, eng))
General Comments 0
You need to be logged in to leave comments. Login now