Let child process to run while parent is out (multiprocessing)

John Wong gokoproject at gmail.com
Thu Jul 19 22:34:31 CEST 2012


def main(...):
    build_id = create_build_id(...)
    build_stuff
    return build_id

Suppose build_stuff compiles a C program. It could take days to finish, and
notify users their builds are ready. I was thinking about using
mutliprocessing to handle the build_stuff.

So here is a sample:

#!/usr/bin/python

import multiprocessing as mp
import time

def build():
    print 'I am building HUGE things'
    time.sleep(10)

def main():
    build_p = mp.Process(name='build process', target=build)
    build_p.start()
    return 'abcd12345'

if __name__ == '__main__':

    v = main()
    print v
    print 'done'

Here is output:
yeukhon at fermat:~$ python c2.py
abcd12345
done  [now hangs for 10 seconds]
I build things

When I looked at `ps -elf|grep python`, I can see two processes running,
and one of the python c2.py process is `wait`.  But this is not ideal,
especially this is a web app. I can't implement any advanced queue / event
system right now (I use Pylon, I believe I have gevent installed). But just
with multiprocessing, is it possible to send the id first, while running
child in the backgroud?

Right now it hangs there as long as the child process is alive. Any
solutions?

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120719/4be33a13/attachment.html>


More information about the Python-list mailing list