File: wmanager.py

package info (click to toggle)
ipython 0.13.1-2%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 15,752 kB
  • sloc: python: 69,537; makefile: 355; lisp: 272; sh: 80; objc: 37
file content (44 lines) | stat: -rw-r--r-- 1,147 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"""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))