Message145592
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. |
|
Date |
User |
Action |
Args |
2011-10-15 14:31:29 | pitrou | set | recipients:
+ pitrou, terry.reedy, jnoller, flox, docs@python, daniel.wagner-hall |
2011-10-15 14:31:29 | pitrou | set | messageid: <1318689089.73.0.125572241768.issue13139@psf.upfronthosting.co.za> |
2011-10-15 14:31:29 | pitrou | link | issue13139 messages |
2011-10-15 14:31:28 | pitrou | create | |
|