Author pitrou
Recipients daniel.wagner-hall, docs@python, flox, jnoller, pitrou, terry.reedy
Date 2011-10-15.14:31:28
SpamBayes Score 6.65482e-05
Marked as misclassified No
Message-id <1318689089.73.0.125572241768.issue13139@psf.upfronthosting.co.za>
In-reply-to
Content
As mentioned in http://docs.python.org/dev/library/multiprocessing#multiprocessing.pool.AsyncResult.get
“If the remote call raised an exception then that exception will be reraised by get().”

map() is just map_async() followed by a get() call on the result.
Also, worker processes are called in daemon mode, which explains that children get killed as soon as the parent exits.

If you rephrase your example as:

try:
    Pool(3).map(Process, ['1','2','3'])
finally:
    sleep(1)

then all the children's finally clauses get a chance to be executed before the parent exits.

I would therefore call it "not a bug", although you might add a sentence in the map() documentation stating that an exception is raised as soon as one of the worker fails.
History
Date User Action Args
2011-10-15 14:31:29pitrousetrecipients: + pitrou, terry.reedy, jnoller, flox, docs@python, daniel.wagner-hall
2011-10-15 14:31:29pitrousetmessageid: <1318689089.73.0.125572241768.issue13139@psf.upfronthosting.co.za>
2011-10-15 14:31:29pitroulinkissue13139 messages
2011-10-15 14:31:28pitroucreate