JustCaptain kod-buduschego
fe9c6c08be73ce67e8771ed2945bb1d512df3ae4
Перейти к файлу
Код
kod-buduschego Python 2025-20264.5. Многопоточностьpracticeschatgpt_2task_6.py
anc update c70a58f 8 октября 2026 г.
task_6.py
"""
TASK-M3 — Пул потоков для генерации отчетов
Контекст: Каждый отчет строится независимо.

Требования
Использовать: concurrent.futures.ThreadPoolExecutor

Запускать не более:
max_workers=3

Результат

Собрать все результаты в список.

⸻

Что проверяется

* ThreadPoolExecutor
* futures
* map / submit

"""

import time
from concurrent.futures import ThreadPoolExecutor, as_completed

reports: list[int] = [101, 102, 103, 104, 105, 106, 107, 108]


def build_report(report_id: int) -> str:
    time.sleep(2)
    return "РЕПОРТ {} отработан".format(report_id)


with ThreadPoolExecutor(max_workers=3) as executor:
    futures_to_report = {
        executor.submit(build_report, report_id): report_id for report_id in reports
    }
    for future in as_completed(futures_to_report):
        report = futures_to_report[future]
        try:
            data = future.result()
            print(data)
        except Exception as exc:
            print(f"Ошибка: {exc}")