Параллельное программирование на Python

preview_player
Показать описание
Курс из 15 занятий, читается весной 2021 года в МФТИ, школа ЛФИ, 2 курс.
Тема 3-го занятия: Параллельное программирование на Python.

Рекомендации по теме
Комментарии
Автор

Тайм-коды: многопоточность, асинхронность, Thread, Очередь/Queue, GIL
0:00 Однопоточность. Последовательное программирование, где 1 исполнитель
4:26 чередование (interleaving). Планировщик задач
13:02 смысл чередования
14:14 ядро. Работа с отложенными задачами, не зависает
22:10 несколько ядер
23:50 цели параллельного программирования:
24:51 1) интерактивность, 2) скорость вычисления
27:20 CPU Генератор частоты
32:10 2 способа увеличить скорость вычислений: 1) много ядер или процессоров. Система с общей памятью
37:17 2) много вычислительных систем (распределённая). Система с разделённой памятью. Бывают: - гомогенные (кластер/фабрика) - гетерогенные (вычислительная сеть, по network)
41:01 Параллельность
43:14 схемы взаимодействия процессов:
44:08 1) shared memory (общая память)
47:18 (-) критическая секция программного кода (двойное вычисление) heisenbug (гейзенбаг) плавающая ошибка
52:15 как решить: Блокировки. Нужна ОС. Mutual exclusion (взаимные исключения) mutex
57:52 разная организация общей памяти
58:35 Queue Очереди
58:58 Pipe очередь символьная. Низкоуровневые сокеты
1:00:55 параллельный алгоритм затратен и требует сложной отладки (в возможных багах)
1:02:04 отладка параллельных систем. В очередях берет на себя - библиотека ЯП
1:09:02 2) другой, проще способ - взаимодействие процессов: main thread. Нити Исполнения
1:12:42 получение результата из треда - join() присоединение нити
1:15:05 у каждой нити свой стэк. Синхронный и асинхронный вызов
1:16:14 взаимодействие между нитями автоматически происходит через shared memory, мы можем и там организовать очередь для взаимодействия без блокировок. Библиотека очередь queue
1:17:53 GIL (Global Interpreter Lock) в Питоне. Глобальная блокировка интерпретатора. Утечка памяти (memory leak)
1:26:55 (+) интерактивность
1:28:51 Практика. Презентация Многопоточность в Python: 1) Поток и процесс, 2) Передача данных между потоками при помощи pipe и общей памяти, 3) GIL, 4) Асинхронное выполнение потоков, 5) Библиотеки threading, multiprocessing, asyncio
1:29:00 Питон - язык не для параллельного программирования. Но в стандартной библиотеке есть:
1:29:40 1) низкоуровневые нити _thread - Low-level threading API 2) высокоуровневый threading
1:30:54 Код. Создание нитей (потоков) и процессов
1:34:34 получение результата с нити. Запуск потока с применением threading
1:35:30 (+) отдельная возможность - запускать и отдельно - передавать параметры
1:36:34 Глобальные переменные - это великое зло для параллельного программирования. Это скрытая критическая секция
1:42:28 передача данных между потоками при помощи pipe и общей памяти Queue
1:43:11 есть очереди, предназначенные для взаимодействия уже самих вычислительных процессов. А есть - для нитей
1:43:27 библиотека queue для threaded programming (передача информации между нитями)
1:44:16 очередь для разных вычислительных процессов multiprocessing.Queue
1:44:20 когда разные вычислительные процессы у нас работает одновременно несколько интерпретаторов Python. (+) производительность
1:45:00 Код. put и get (давать и брать) в/из очереди
1:47:25 Pipe - структура данных для связи между процессами в multiprocessing
1:53:33 Менеджер - класс многопроцессорных модулей, обеспечивающий общую информацию
1:55:30 Заключение. Ограниченный ресурс параллельности. Возможность параллелизации. Зависимость от данных. Начать вычисление может только 1 актор. При максимальной эффективности

iritaka
Автор

Гениальный преподаватель. С горящими глазами, юмором, уместными метафорами! Нет слов, браво!

valentin
Автор

Пишет "параллельное программирование" не отвлекаясь на свои слова. Это реальный пример такого программирования.

mmmkir
Автор

Тимофей Федорович, большое спасибо за ваши лекции, очень интересно и очень полезно

ihmcjeo
Автор

Крутой канал, мужику респектище, знает своё дело

dimaalexeenko
Автор

Как всегда - превосходен 👏 Особенно, хотелось отметить особый талант лектора

denisbaranoff
Автор

Просто замечательная подача информации. Ждем продолжения, тема очень интересная

olegger
Автор

как быстро время летит, попал на ваше видео 2017 года, а вы все также молоды👍🏿

skrskrbam
Автор

Спасибо Тимофей, всегда с большим удоволствием смoтрю ваши лекции!

MrMegaNatural
Автор

Добрый день. Благодарю вас за прекрасные лекции. Для комфортного просмотра отключайте, пожалуйста, уведомления - они сильно отвлекают)

erxewq
Автор

Вот это я понимаю любовь к своему делу, прекасно)) Спасибо Вам Тимофей))

actr
Автор

Великолепная подача информации. Мое вам почтение.

maxbespontoff
Автор

Захожу в лекции Хирьянова после чтения документации, чтобы вспомнить ощущение, когда всё понимаешь.

peskarr
Автор

Respect. Timofey Xiryanov You are the best. Thanks!!!

headcliff
Автор

Супер! очень полезно. Скорее бы след. лекция.

peummln
Автор

Спасибо за лекцию – очень интересно, информативно и полезно!

sergeyv
Автор

Тимофей Федорович, респект и уважуха, очень вдохновляете, я подсел на ваши лекции)

efbtnio
Автор

Это лучшее объяснение фунтамента параллелизма, что я видел. must-see

usernoname-wvof
Автор

Вспомнил момент восхищения от новости про выход Pentium D - ДВУХЯДЕРНЫЙ!!!! ЭТО КАК ДВА ПРОЦЕССОРА НО В ОДНОМ!!!
Статью прочитал тогда в игромании или стране игр, точно не помню журнал.

tremorkikimor
Автор

Как всегда лайк. Не хватает примеров, которые вы на ходу демонстрировали на прошлых видео. Например, как с черепахой и объяснением, что происходит в конкретном месте.
Этого очень не хватает, когда высоздаете классы наследующие из базовых классов

ealbitg