mirror of
https://github.com/python/cpython.git
synced 2025-10-28 17:13:08 +00:00
Issue #9205: concurrent.futures.ProcessPoolExecutor now detects killed
children and raises BrokenProcessPool in such a situation. Previously it would reliably freeze/deadlock.
This commit is contained in:
parent
4a5e5de03f
commit
dd69649660
8 changed files with 587 additions and 107 deletions
|
|
@ -169,6 +169,12 @@ to a :class:`ProcessPoolExecutor` will result in deadlock.
|
|||
of at most *max_workers* processes. If *max_workers* is ``None`` or not
|
||||
given, it will default to the number of processors on the machine.
|
||||
|
||||
.. versionchanged:: 3.3
|
||||
When one of the worker processes terminates abruptly, a
|
||||
:exc:`BrokenProcessPool` error is now raised. Previously, behaviour
|
||||
was undefined but operations on the executor or its futures would often
|
||||
freeze or deadlock.
|
||||
|
||||
|
||||
.. _processpoolexecutor-example:
|
||||
|
||||
|
|
@ -369,3 +375,16 @@ Module Functions
|
|||
:pep:`3148` -- futures - execute computations asynchronously
|
||||
The proposal which described this feature for inclusion in the Python
|
||||
standard library.
|
||||
|
||||
|
||||
Exception classes
|
||||
-----------------
|
||||
|
||||
.. exception:: BrokenProcessPool
|
||||
|
||||
Derived from :exc:`RuntimeError`, this exception class is raised when
|
||||
one of the workers of a :class:`ProcessPoolExecutor` has terminated
|
||||
in a non-clean fashion (for example, if it was killed from the outside).
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue