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:
parent
1bf7dee8d3
commit
ceba0648d7
|
@ -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*
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue