feat: implement legacy shop management system and add task documentation files
CI Check / lint-and-check (push) Failing after 9s

This commit is contained in:
Dmitry Belan
2026-07-18 12:25:32 +03:00
parent 7e8afd2a7e
commit ee235ece10
14 changed files with 953 additions and 1 deletions
+25
View File
@@ -0,0 +1,25 @@
### Задача 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`.