What is the difference between concurrent.futures and asyncio.futures?

PythonPython 3.xModulePython Asyncioconcurrent.futures

Python Problem Overview


To clarify the reason for this question:

  1. It is confusing to use two modules with the same name. What do they represent that makes them distinct?

  2. What task(s) can one solve that the other can't and vice-versa?

Python Solutions


Solution 1 - Python

The asyncio documentation covers the differences:

> class asyncio.Future(*, loop=None) > > This class is almost compatible with concurrent.futures.Future. > > Differences: > > - result() and exception() do not take a timeout argument and raise an exception when the future isn’t done yet. > - Callbacks registered with add_done_callback() are always called via the event loop’s call_soon_threadsafe(). > - This class is not compatible with the wait() and as_completed() functions in the concurrent.futures package. > > This class is not thread safe.

Basically, if you're using ThreadPoolExecutor or ProcessPoolExecutor, or want to use a Future directly for thread-based or process-based concurrency, use concurrent.futures.Future. If you're using asyncio, use asyncio.Future.

Solution 2 - Python

From the docs:

> [asyncio provides a] Future class that mimics the one in the concurrent.futures module, but adapted for use with the event loop;

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsargasView Question on Stackoverflow
Solution 1 - PythondanoView Answer on Stackoverflow
Solution 2 - PythonchepnerView Answer on Stackoverflow