Files
Igor-kr/Final control/10/TASK.md
T
Dmitry Belan ee235ece10
CI Check / lint-and-check (push) Failing after 9s
feat: implement legacy shop management system and add task documentation files
2026-07-18 12:25:32 +03:00

1.9 KiB
Raw Blame History

Задача 10. Многопоточность и очереди (Threading, Queue, Синхронизация)

Напишите программу для обработки задач в нескольких потоках:

  1. Класс Worker:

    • В __init__(self, name, queue) сохраните имя рабочего и очередь задач
    • Метод run(self) — бесконечный цикл: берет задачу из очереди (queue.get()), обрабатывает её (просто выводит "Worker {name} обрабатывает: {task}"), делает time.sleep(1) для имитации работы, затем вызывает queue.task_done()
  2. create_workers(count, queue) — создает count объектов Worker, запускает каждого в отдельном потоке (threading.Thread) с daemon=True. Возвращает список потоков.

  3. process_tasks(tasks, worker_count=3) — принимает список задач:

    • Создает очередь queue.Queue()
    • Добавляет все задачи в очередь
    • Создает рабочих через create_workers
    • Ждет завершения всех задач через queue.join()
    • Выводит "Все задачи обработаны"

Тесты:

  1. Создайте список из 10 задач: ["Задача 1", "Задача 2", ..., "Задача 10"]
  2. Запустите обработку с 3 рабочими потоками
  3. Убедитесь, что задачи распределяются между потоками
  4. Замерьте время выполнения (должно быть ~4 секунды для 10 задач с 3 потоками)

Подсказка: Импортируйте import threading, import queue, import time.