Содержание пакета (3 курса)
1. Асинхронный Python 4.72
Начало
1 урок
1.
Введение
↗
Основы асинхронного программирования
6 уроков
1.
Введение в асинхронность
↗
2.
Основные преимущества asyncio
↗
3.
IO bound и CPU bound
↗
4.
В каких задачах полезно асинхронное программирование
↗
5.
В каких задачах бесполезно асинхронное программирование
↗
6.
GIL
↗
Awaitable объекты
7 уроков
1.
Основные элементы asyncio
↗
2.
Coroutines / Корутины
↗
3.
Task / Задачи
↗
4.
Future / Футуры
↗
5.
Awaitable объекты
↗
6.
Ключевое слово await
↗
7.
Цикл событий (event loop)
↗
Основы работы с Asyncio
15 уроков
1.
Основные методы asyncio
↗
2.
Запуск цикла событий
↗
3.
Асинхронный сон
↗
4.
Создание задач
↗
5.
Создание задач, часть 2
↗
6.
Одновременное выполнение корутин
↗
7.
Предотвращаем "зависание" корутин
↗
8.
Ожидание группы корутин
↗
9.
Получение результатов от группы задач по мере завершения
↗
10.
Создаём новый цикл событий
↗
11.
Устанавливаем цикл событий по умолчанию
↗
12.
Получаем ссылку на текущий цикл событий
↗
13.
Получаем доступ к текущему циклу событий
↗
14.
Запуск блокирующих функций в отдельном потоке
↗
15.
Контекстные переменные
↗
Работа с задачами / task
15 уроков
1.
Введение в задачи / task
↗
2.
Основные методы управления задачами / task
↗
3.
Проверка статуса задачи
↗
4.
Получение результата выполнения задачи
↗
5.
Работа с текущей задачей
↗
6.
Получение всех задач в цикле событий
↗
7.
Установка и получение имени задачи
↗
8.
Работа с исключениями внутри задачи
↗
9.
Работа с отменой задач
↗
10.
Получение информации о состоянии цикла событий и корутин
↗
11.
Работа с асинхронным стеком вызова
↗
12.
Работа Сallback функции
↗
13.
Защита корутины от отмены
↗
14.
Работа с группой задач TaskGroup()
↗
15.
Решаем задачи
↗
Асинхронные конструкции
2 урока
1.
async with
↗
2.
async for
↗
Проблемы синхронизации
5 уроков
1.
Состояние гонки
↗
2.
Атомарность операций
↗
3.
Мьютекс (mutex)
↗
4.
Решаем проблему состояния гонки
↗
5.
Deadlock
↗
Работа с очередями в Asyncio
4 урока
1.
Введение в очереди
↗
2.
Очередь FIFO
↗
3.
Очередь LIFO
↗
4.
Очередь Priority
↗
Базовые примитивы синхронизации Asyncio
7 уроков
1.
Введение в примитивы
↗
2.
Защита ресурса от одновременного доступа
↗
3.
Ожидание событий для синхронизации доступа
↗
4.
Синхронизация задач
↗
5.
Принцип простого семафора
↗
6.
Принцип ограниченного семафора
↗
7.
Реализация барьера для защиты одновременного доступа
↗
aiofiles
9 уроков
1.
Введение в асинхронное чтение файлов
↗
2.
Aiofiles введение
↗
3.
Основные методы и параметры аiofiles
↗
4.
Методы асинхронного файлового объекта
↗
5.
Контроль знаний
↗
6.
Основные методы аiofiles.os
↗
7.
Контроль знаний
↗
8.
Асинхронная работа с CSV-файлами
↗
9.
Решаем задачи
↗
aiohttp
9 уроков
1.
Введение в aiohttp
↗
2.
Методы клиентской сессии, часть 1
↗
3.
Методы клиентской сессии, часть 2
↗
4.
Жизненный цикл HTTP-запроса
↗
5.
Работа с Cookies
↗
6.
Работа с прокси
↗
7.
HTTP заголовки
↗
8.
Основы работы с исключениями в aiohttp
↗
9.
Решаем задачи
↗
2. Многопоточный Python 4.82
Введение в многопоточность
12 уроков
1.
Введение
↗
2.
Основные понятия
↗
3.
Что такое потоки
↗
4.
Что такое главный поток
↗
5.
Ожидание результата от потока
↗
6.
Ожидание выполнения потока
↗
7.
Имена потоков
↗
8.
Атрибуты потока
↗
9.
Хранение локальных данных потока
↗
10.
Атомарные операции
↗
11.
Поток-таймер
↗
12.
Вспомогательные функции для работы с потоками
↗
Работа с пулами потоков
12 уроков
1.
Что такое пулы потоков
↗
2.
Создание пула потоков
↗
3.
Отправка задач в пул потоков с помощью submit() и map()
↗
4.
Получаем результаты из пула потоков
↗
5.
Что такое Executors
↗
6.
Ожидание завершения задач
↗
7.
Инициализация рабочих потоков
↗
8.
Завершение работы пула потоков
↗
9.
Количество потоков
↗
10.
Жизненный цикл пула потоков
↗
11.
Тестирование и оптимальное количество потоков
↗
12.
ThreadPool vs AsyncIO
↗
Подробнее о Futures
8 уроков
1.
Что такое Futures
↗
2.
Объект Future
↗
3.
Методы Future
↗
4.
Жизненный цикл Future
↗
5.
Проверяем статус Future
↗
6.
Добавляем обратный вызов к Future
↗
7.
Получение исключений из Future
↗
8.
Всё об отмене Future
↗
Потокобезопасные очереди
5 уроков
1.
Введение в очереди
↗
2.
Queue
↗
3.
LifoQueue
↗
4.
PriorityQueue
↗
5.
SimpleQueue и исключения
↗
Управление потоками и синхронизация
8 уроков
1.
Блокировка взаимного исключения (Lock)
↗
2.
Реентерабельная блокировка (RLock)
↗
3.
Синхронизация по событиям (Event)
↗
4.
Синхронизация с условием (Condition)
↗
5.
Семафор в потоках (Semaphore)
↗
6.
Как остановить все задачи
↗
7.
Остановить все задачи, если одна завершилась неудачей
↗
8.
Барьер в потоках (Barrier)
↗
Advanced Locking - Продвинутое блокирование
5 уроков
1.
Конкуренция за блокировку
↗
2.
Чередование блокировок
↗
3.
Разделение блокировок
↗
4.
Повторная попытка блокировки с откатом
↗
5.
Накладные расходы поточной блокировки
↗
Практическое применение и продвинутые техники
3 урока
1.
Последовательная и параллельная загрузка
↗
2.
Одновременная загрузка файлов
↗
3.
Обработка исключений во время выполнения задачи
↗
Безопасность потоков
7 уроков
1.
Потокобезопасный счетчик
↗
2.
Потокобезопасная печать
↗
3.
Потокобезопасное логирование
↗
4.
Потокобезопасный словарь
↗
5.
Потокобезопасный список
↗
6.
Потокобезопасная запись в файл
↗
7.
Непостоянные переменные
↗
Создание и работа с пулом в модуле multiprocessing
14 уроков
1.
Введение
↗
2.
ThreadPoolExecutor vs ProcessPoolExecutor
↗
3.
Синхронное выполнение одиночной задачи
↗
4.
Асинхронное выполнение одиночной задачи
↗
5.
Синхронная обработка коллекций
↗
6.
Асинхронная обработка коллекций
↗
7.
Итеративная синхронная обработка задач
↗
8.
Итеративная синхронная обработка задач без сохранения порядка
↗
9.
Синхронная обработка задач с множеством аргументов
↗
10.
Асинхронная обработка задач с множеством аргументов
↗
11.
Какой метод выбрать?
↗
12.
Сравнение методов
↗
13.
Лучшие практики использования пула процессов
↗
14.
Распространенные ошибки
↗
3. Многопроцессорный Python 4.90
Введение
7 уроков
1.
Содержание курса
↗
2.
Введение
↗
3.
Процессы и потоки
↗
4.
Глобальная блокировка интерпретатора GIL
↗
5.
Многозадачность в Python
↗
6.
Мультипроцессинг против многопоточности
↗
7.
Мультипроцессорное программирование в Python
↗
Основы модуля multiprocessing
11 уроков
1.
Главный процесс
↗
2.
Дочерние процессы
↗
3.
Взаимодействие главного и дочерних процессов.
↗
4.
Главный поток процесса
↗
5.
Получение процесса по имени
↗
6.
Как получить PID процесса
↗
7.
Получение количества ядер процессора
↗
8.
Статус и характеристики процесса
↗
9.
Как перезапустить процесс
↗
10.
Метод join()
↗
11.
Идиома if __name__ == ‘__main__’
↗
Возврат данных из процесса
8 уроков
1.
Возвращаем значение из процесса
↗
2.
multiprocessing.Value
↗
3.
multiprocessing.Array
↗
4.
multiprocessing.Pipe
↗
5.
multiprocessing.Pipe. Практика
↗
6.
multiprocessing.Queue
↗
7.
multiprocessing.SimpleQueue
↗
8.
multiprocessing.JoinableQueue
↗
Примитивы синхронизации
7 уроков
1.
Примитивы синхронизации
↗
2.
Многопроцессорный Lock
↗
3.
Многопроцессорный RLock
↗
4.
Многопроцессорный Event
↗
5.
Многопроцессорный Semaphore
↗
6.
Многопроцессорная переменная Condition
↗
7.
Многопроцессорный Barrier
↗
Убийство процессов
5 уроков
1.
Остановка главного процесса дочерним
↗
2.
Убийство или завершение процесса
↗
3.
Убить процесс по PID
↗
4.
Как безопасно убить или завершить процесс
↗
5.
Завершение текущего процесса
↗
Менеджеры
6 уроков
1.
Что такое Manager
↗
2.
Менеджер с примитивами синхронизации и очередями
↗
3.
Общее пространство имен с помощью менеджера
↗
4.
Пользовательские менеджеры
↗
5.
Серверный процесс менеджера
↗
6.
Вложенные прокси-объекты у менеджера
↗
Пул процессов ProcessPoolExecutor
12 уроков
1.
Знакомство с пулом процессов
↗
2.
Отправка задач в пул процессов
↗
3.
Возможности объекта Future
↗
4.
Ожидание завершения задач, ч1
↗
5.
Ожидание завершения задач, ч2
↗
6.
Как добавить callback к задаче в ProcessPoolExecutor
↗
7.
map() против submit()
↗
8.
Настройка пула процессов
↗
9.
Обработка исключений при работе с пулом процессов
↗
10.
Примитивы синхронизации с пулом процессов
↗
11.
Как повторно выполнить неудачные задачи в ProcessPoolExecutor
↗
12.
Как работает ProcessPoolExecutor
↗
Пул процессов multiprocessing.Pool
7 уроков
1.
Пул процессов multiprocessing.Pool
↗
2.
Блокирующее выполнение одиночной задачи
↗
3.
Неблокирующее выполнение одиночной задачи
↗
4.
Блокирующая отправка группы задач в пул
↗
5.
Неблокирующая отправка группы задач в пул
↗
6.
Итеративная обработка задач
↗
7.
Какой метод выбрать?
↗
Продвинутый уровень
5 уроков
1.
Пользовательские процессы
↗
2.
Иерархия процессов и задач
↗
3.
Почему не стоит использовать только процессы?
↗
4.
Потоки в процессах
↗
5.
Рекомендации и предостережения
↗
Практика
1 урок
1.
Решаем задачи
↗