### Задача 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`.