Что выведет код Junior GIL, потоки и процессы обновлено

Порядок результатов pool.map

Вопрос

Что выведет код? По строке на каждый print.

from concurrent.futures import ThreadPoolExecutor
import time

def job(x):
    time.sleep(0.05 * (3 - x))
    return x * 10

with ThreadPoolExecutor(max_workers=3) as pool:
    print(list(pool.map(job, [0, 1, 2])))

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: [0, 10, 20]. map возвращает результаты в порядке входных данных, даже если задачи завершились в другом порядке (здесь последняя задача заканчивается первой).

Что выведет

[0, 10, 20]

Разбор

map возвращает результаты в порядке входных данных, даже если задачи завершились в другом порядке (здесь последняя задача заканчивается первой). Получать результаты по мере готовности позволяет as_completed.

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

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