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 a
futureobject representing the execution of the callable.
map: Maps a callable to a set of iterables, scheduling the execution asynchronously in the
futureobject. 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 ...