Antoine Pitrou <[email protected]> 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 <[email protected]>
<http://bugs.python.org/issue13139>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com