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

This commit is contained in:
Pablo Galindo 2020-04-11 03:05:37 +01:00 committed by GitHub
parent f13072b8a8
commit 7ec43a7309
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*