В чем разница между concurrent.futures и asyncio.futures?

Чтобы прояснить причину этого вопроса:

  1. Сложно использовать два модуля с тем же именем. Что они представляют, что делает их отличными?

  2. Какую задачу можно решить, а другая не может и наоборот?

2 Solutions collect form web for “В чем разница между concurrent.futures и asyncio.futures?”

Документация asyncio охватывает различия:

class asyncio.Future(*, loop=None)

Этот класс почти совместим с concurrent.futures.Future .

Отличия:

  • result() и exception() не принимают аргумент таймаута и создают исключение, если будущее еще не завершено.
  • add_done_callback() зарегистрированные с помощью add_done_callback() , всегда вызываются через call_soon_threadsafe() .
  • Этот класс несовместим с функциями wait() и as_completed() в пакете concurrent.futures .

Этот класс не является потокобезопасным.

В принципе, если вы используете ThreadPoolExecutor или ProcessPoolExecutor или хотите использовать Future напрямую для параллелизма на основе потоков или процессов, используйте concurrent.futures.Future . Если вы используете asyncio , используйте asyncio.Future .

Из документов :

[ asyncio предоставляет] будущий класс, который имитирует тот, который находится в модуле concurrent.futures, но адаптирован для использования с циклом события;

  • asyncio queue consumer coroutine
  • Что делает сам = Нет?
  • Как использовать 'yield' внутри функции async?
  • Получение значений из функций, выполняемых как задачи asyncio
  • Как добавить сопрограмму / задачу в цикл из «функции блокировки», уже запущенной в цикле
  • Ленивые итераторы (генераторы) с асинчио
  • Asyncio RuntimeError: цикл событий закрыт
  • asyncio awaitable object - базовый пример
  • Python - лучший язык программирования в мире.