Concurrent futures – high-level concurrent processing
The concurrent.futures
module provides high-level concurrent processing using either threads or processes, while asynchronously returning data using future objects.
It provides an executor interface which exposes mainly two methods, which are as follows:
submit
: Submits a callable to be executed asynchronously, returning afuture
object representing the execution of the callable.map
: Maps a callable to a set of iterables, scheduling the execution asynchronously in thefuture
object. However, this method returns the results of processing directly instead of returning a list of futures.
There are two concrete implementations of the executor interface: ThreadPoolExecutor
executes the callable in a pool of threads, and ProcessPoolExecutor
does so in a pool of processes.
Here is a simple example of a future
object that calculates the factorial of a set of integers asynchronously:
from concurrent.futures import ThreadPoolExecutor, as_completed...