Python: GIL MultiThreading презентация

Содержание

Многопоточность

Слайд 1Python: GIL MultiThreading
Stacy Khomenko, GlobalLogic


Слайд 2

Многопоточность


Слайд 3Multithreading
Потоки нужны для произведения параллельных вычислений

Потоки нужно:
Создавать
Ожидать
Завершать


Слайд 4Совместное использование ресурсов
Взаимоисключения (mutex)
Критическая секция (fast mutex,  futex)
Семафоры (пул ресурсов)
События


Слайд 5Изменяемые объекты
Неизменяемые
Изменяемые, не имеющие представления о потоках
Мониторы
Активные объекты


Слайд 7Мониторы


Слайд 8Thread Pools – concurrent.futures
Новинка Python 3.2
future - отложенное значение


Слайд 9Активные объекты


Слайд 10

Global Interpreter Lock


Слайд 11Global Interpreter Lock
Global Interpreter Lock (GIL) - особый алгоритм мьютекса (лока),

накладываемый на поток интерпретатора для исключения одновременного потоково-небезопасного доступа к общим ресурсам.


Слайд 12Global Interpreter Lock
GIL используется в Cpython, Ruby, PHP
GIL в Python v.2.x

и v.3.2 различается существенно
Python branches 2.x и v.3.x – обратно несовместимы


Слайд 13

GIL in Python 2.x


Слайд 14GIL in Python 2.x
Одновременно исполняется лишь поток интерпретатора
100 тиков (инструкций)
Освобождается

на время операций ввода-вывода, простых арифметических операций

Слайд 15GIL in Python 2.x – 1 CPU


Слайд 16GIL in Python 2.x
Последовательный запуск
Выполнение отнимает 13 sec


Слайд 17GIL in Python 2.x – N CPU
Параллельный запуск на 2х процессорном

PC
Выполнение отнимает 30 sec

Слайд 19GIL in Python 2.x – N CPU
Проблема Control-C


Слайд 20GIL in Python 2.x – N CPU
Слишком много сигналов
CPU-потоки блокируют IO-потоки

(неверная расстановка приоритетов)


Слайд 21Почему такой алгоритм GIL?
Guido van Rossum: “…
Нужно переписать половину интерпетатора –

трудоемко
В результате замедлится выполнение всех инструкций Python – бессмысленно
Используйте модули ‘processing’, parallelpython, Pypar, pyMPI
Возьмите Jython, IronPython, etc и боритесь с dead-lock’ами…”



Слайд 22

GIL in Python 3.2


Слайд 23GIL in Python 3.2
Тайм-аут для переключения между потоками (5 ms) вместо

количества операций (100)
Рабочая приоритетизация
Существенное уменьшение количества сигналов и другого “мусора”


Слайд 24GIL in Python 3.2
Теперь необходимо 21 sec в обоих случаях


Слайд 25GIL in Python 3.2


Слайд 26Выводы
Python v.3.2 GIL работает существенно эффективнее

В Python многопоточность возможна!


Слайд 27
Thank you

This presentation was made using researches of David Beazley and

Andrew Svetlov

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика