Новый курс от автора курса Асинхронный Python.
С этим курсом вы освоите многопоточное программирование и откроете для себя мир высокопроизводительных приложений! Курс предлагает хорошо структурированную теорию, практические задания, поддержку экспертов и доступ к сообществу. Погрузитесь в учебу, примените полученные знания на практике и станьте востребованным специалистом, подтвердив свои навыки сертификатом. Начните трансформацию своего кода и карьеры запишитесь на курс уже сегодня!
Курс направлен на изучение и глубокое понимание многопоточности. Целью является обучение разработчиков созданию высокопроизводительных и эффективных многопоточных приложений, позволяющих максимально использовать ресурсы современных систем.
Этот курс выделяется на фоне других благодаря своей акцентированности на практическом применении знаний, предоставлению реальных кейсов и задач, которые разработчики могут столкнуться в своей профессиональной деятельности. Он предлагает глубокое погружение в тему с пошаговыми инструкциями и лучшими практиками, подкрепленными примерами кода и практическими задачами.
После успешного завершения курса учащиеся приобретут навыки:
- Разработки многопоточных приложений на Python;
- Эффективного использования потоков и пулов потоков;
- Оптимизации производительности программ;
- Понимания и устранения проблем, связанных с многопоточностью.
- И многое другое…
Программа курса
Введение в многопоточность
- Введение
- Основные понятия
- Что такое потоки
- Что такое главный поток
- Ожидание результата от потока
- Ожидание выполнения потока
- Имена потоков
- Атрибуты потока
- Хранение локальных данных потока
- Атомарные операции
- Как перезапустить поток
- Блокирующие вызовы в потоках
- Поток-таймер
- Вспомогательные функции для работы с потоками
Работа с пулами потоков и Executors
- Что такое пулы потоков
- Создание пула потоков
- Отправка задач в пул потоков с помощью submit() и map()
- Получаем результаты из пула потоков
- Жизненный цикл ThreadPoolExecutor
- Что такое Executors
- Ожидание завершения задач
- Инициализации рабочих потоков
- Завершение работы пула потоков
- Количество потоков
- Тестирование и оптимальное количество потоков
- ThreadPoolExecutor vs AsyncIO
Подробнее о Futures
- Что такое Futures
- Объект Future
- Методы Future
- Жизненный цикл Future
- Проверяем статус Future
- Добавляем обратный вызов к Future
- Получение исключений из Future
- Всё об отмене Future
Управление потоками и синхронизация
- Блокировка взаимного исключения. Объект Lock
- Реентерабельная блокировка
- Синхронизация по событиям (Event)
- Синхронизация с условием (Condition)
- Семафор в потоках
- Как остановить все задачи
- Остановить все задачи, если одна завершилась неудачей
- Барьер в потоках (Barrier)
Advanced Locking — Продвинутое блокирование
- Конкуренция за блокировку
- Чередование блокировок
- Разделение блокировок
- Повторная попытка блокировки с откатом
- Накладные расходы поточной блокировки
Практические применение и продвинутые техники
- Последовательная и параллельная загрузка
- Одновременная загрузка файлов с submit() и as_completed()
- Обработка исключений во время выполнения задачи
Безопасность потоков
- Потокобезопасный счетчик
- Потокобезопасная печать
- Потокобезопасное логирование
- Потокобезопасный словарь
- Потокобезопасный список
- Потокобезопасная запись в файл
- Непостоянные переменные
Создание и работа с пулом потоков в модуле multiprocessing
- ThreadPoolExecutor vs ProcessPoolExecutor
- Синхронное выполнение одиночной задачи
- Асинхронное выполнение одиночной задачи
- Синхронная обработка коллекций
- Асинхронная обработка коллекций
- Итеративная синхронная обработка задач
- Итеративная синхронная обработка задач без сохранения порядка
- Синхронная обработка задач с множеством аргументов
- Асинхронная обработка задач с множеством аргументов
- Какой метод выбрать?
- Сравнение методов
- Лучшие практики использования пула процессов
- Распространенные ошибки








