bpo-32306: Clarify c.f.Executor.map() documentation (GH-4947) (#4948)

The built-in map() function collects function arguments lazily, but concurrent.futures.Executor.map() does so eagerly.
(cherry picked from commit a7a751dd7b)
This commit is contained in:
Miss Islington (bot) 2017-12-20 10:19:18 -08:00 committed by Antoine Pitrou
parent 75d1ca26b0
commit 4aa84e7285

View file

@ -40,21 +40,29 @@ Executor Objects
.. method:: map(func, *iterables, timeout=None, chunksize=1) .. method:: map(func, *iterables, timeout=None, chunksize=1)
Equivalent to :func:`map(func, *iterables) <map>` except *func* is executed Similar to :func:`map(func, *iterables) <map>` except:
asynchronously and several calls to *func* may be made concurrently. The
returned iterator raises a :exc:`concurrent.futures.TimeoutError` if * the *iterables* are collected immediately rather than lazily;
:meth:`~iterator.__next__` is called and the result isn't available
* *func* is executed asynchronously and several calls to
*func* may be made concurrently.
The returned iterator raises a :exc:`concurrent.futures.TimeoutError`
if :meth:`~iterator.__next__` is called and the result isn't available
after *timeout* seconds from the original call to :meth:`Executor.map`. after *timeout* seconds from the original call to :meth:`Executor.map`.
*timeout* can be an int or a float. If *timeout* is not specified or *timeout* can be an int or a float. If *timeout* is not specified or
``None``, there is no limit to the wait time. If a call raises an ``None``, there is no limit to the wait time.
exception, then that exception will be raised when its value is
retrieved from the iterator. When using :class:`ProcessPoolExecutor`, this If a *func* call raises an exception, then that exception will be
method chops *iterables* into a number of chunks which it submits to the raised when its value is retrieved from the iterator.
pool as separate tasks. The (approximate) size of these chunks can be
specified by setting *chunksize* to a positive integer. For very long When using :class:`ProcessPoolExecutor`, this method chops *iterables*
iterables, using a large value for *chunksize* can significantly improve into a number of chunks which it submits to the pool as separate
performance compared to the default size of 1. With :class:`ThreadPoolExecutor`, tasks. The (approximate) size of these chunks can be specified by
*chunksize* has no effect. setting *chunksize* to a positive integer. For very long iterables,
using a large value for *chunksize* can significantly improve
performance compared to the default size of 1. With
:class:`ThreadPoolExecutor`, *chunksize* has no effect.
.. versionchanged:: 3.5 .. versionchanged:: 3.5
Added the *chunksize* argument. Added the *chunksize* argument.