July 20, 2010 0

Run concurrent processes

By Anthony in Snippets
import signal
import subprocess, os

signal.alarm(5)

def oh_crap(*args):
    def _inner(*a):
        for pid in args:
            print "Killing %d" % pid
            os.kill(pid, signal.SIGKILL)
    return _inner

p1 = subprocess.Popen(["/usr/bin/python", "alarmer.py"])
p2 = subprocess.Popen(["/usr/bin/python", "alarmer.py"])

signal.signal(signal.SIGALRM, oh_crap(p1.pid, p2.pid))

pid, sts = os.waitpid(p1.pid, 0)
pid, sts = os.waitpid(p2.pid, 0)

print "Done."