Antoine Pitrou <pit...@free.fr> added the comment:

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.

----------
assignee:  -> docs@python
components: +Documentation
nosy: +docs@python, pitrou

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13139>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to