Карточка Junior GIL, потоки и процессы обновлено

concurrent.futures

Вопрос

Что дают ThreadPoolExecutor и ProcessPoolExecutor?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Единый интерфейс пула: submit(fn, args) возвращает Future, map(fn, items) даёт результаты по порядку, ascompleted(futures) по мере готовности. Пул ограничивает число одновременных потоков или процессов.

Ответ

Единый интерфейс пула: submit(fn, *args) возвращает Future, map(fn, items) даёт результаты по порядку, as_completed(futures) по мере готовности. Пул ограничивает число одновременных потоков или процессов.

Разбор

Исключение в задаче сохраняется в Future и бросается при result(). В asyncio результат пула можно ждать через loop.run_in_executor.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.