Mediumconcurrent-futures
Что такое concurrent.futures?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
concurrent.futures (Python 3.2) — high-level API для асинхронного выполнения. Два executor'а: ThreadPoolExecutor (потоки), ProcessPoolExecutor (процессы). Одинаковый интерфейс.
from concurrent.futures import ThreadPoolExecutor, as_completed
with ThreadPoolExecutor(max_workers=4) as ex:
# submit + as_completed — обработка в порядке завершения
futures = [ex.submit(fetch_url, url) for url in urls]
for f in as_completed(futures):
print(f.result()) # готовый результат
# map — ordered results, блокирует до всех
results = list(ex.map(fetch_url, urls))Future.result(timeout)— блокирует,exception(),add_done_callback(fn);- ProcessPoolExecutor — для CPU-bound, использует multiprocessing под капотом (pickle);
submit + as_completed— для порядка завершения;map— для ordered;asyncio.run_in_executor(loop, executor, func)— bridge между async и sync.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.