bpo-38501: Add a warning section to multiprocessing.Pool docs about resource managing (GH-19466)

(cherry picked from commit 7ec43a7309)

Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
This commit is contained in:
Miss Islington (bot) 2020-04-10 19:11:17 -07:00 committed by GitHub
parent 1bf7dee8d3
commit ceba0648d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 1 deletions

View File

@ -439,7 +439,8 @@ process which created it.
>>> def f(x): >>> def f(x):
... return x*x ... return x*x
... ...
>>> p.map(f, [1,2,3]) >>> with p:
... p.map(f, [1,2,3])
Process PoolWorker-1: Process PoolWorker-1:
Process PoolWorker-2: Process PoolWorker-2:
Process PoolWorker-3: Process PoolWorker-3:
@ -2127,6 +2128,16 @@ with the :class:`Pool` class.
Note that the methods of the pool object should only be called by Note that the methods of the pool object should only be called by
the process which created the pool. the process which created the pool.
.. warning::
:class:`multiprocessing.pool` objects have internal resources that need to be
properly managed (like any other resource) by using the pool as a context manager
or by calling :meth:`close` and :meth:`terminate` manually. Failure to do this
can lead to the process hanging on finalization.
Note that is **not correct** to rely on the garbage colletor to destroy the pool
as CPython does not assure that the finalizer of the pool will be called
(see :meth:`object.__del__` for more information).
.. versionadded:: 3.2 .. versionadded:: 3.2
*maxtasksperchild* *maxtasksperchild*