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

Содержание


Презентации» Образование» Python: GIL MultiThreading
Python:	GIL 		MultiThreading
 Stacy Khomenko, GlobalLogicМногопоточностьMultithreading
 		Потоки нужны для произведения 	параллельных вычислений
 Потоки нужно:
 Создавать
 Ожидать
Совместное использование ресурсов
 Взаимоисключения (mutex)
 Критическая секция (fast mutex,  futex)
 СемафорыИзменяемые объекты
 Неизменяемые
 Изменяемые, не имеющие представления о потоках
 Мониторы
 АктивныеMutexМониторыThread Pools – concurrent.futuresАктивные объектыGlobal Interpreter LockGlobal Interpreter Lock
 		Global Interpreter Lock (GIL) - особый алгоритм мьютексаGlobal Interpreter Lock
 GIL используется в Cpython, Ruby, PHP
 GIL вGIL in Python 2.xGIL in Python 2.x
 Одновременно исполняется лишь поток интерпретатора 
 100GIL in Python 2.x – 1 CPUGIL in Python 2.xGIL in Python 2.x – N CPUGIL in Python 2.x – N CPUGIL in Python 2.x – N CPU
 Слишком много сигналов
 CPU-потокиПочему такой алгоритм GIL?
 Guido van Rossum: “…
 Нужно переписать половинуGIL in Python 3.2GIL in Python 3.2
 Тайм-аут для переключения между потоками (5 ms)GIL in Python 3.2
 Теперь необходимо 21 sec в обоих случаяхGIL in Python 3.2Выводы
 Python v.3.2 GIL работает существенно эффективнее
 В Python многопоточность возможна!Thank you
 
 This presentation was made using researches of David



Слайды и текст этой презентации
Слайд 1
Описание слайда:
Python: GIL MultiThreading Stacy Khomenko, GlobalLogic


Слайд 2
Описание слайда:
Многопоточность

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

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

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

Слайд 6
Описание слайда:
Mutex

Слайд 7
Описание слайда:
Мониторы

Слайд 8
Описание слайда:
Thread Pools – concurrent.futures

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

Слайд 10
Описание слайда:
Global Interpreter Lock

Слайд 11
Описание слайда:
Global Interpreter Lock Global Interpreter Lock (GIL) - особый алгоритм мьютекса (лока), накладываемый на поток интерпретатора для исключения одновременного потоково-небезопасного доступа к общим ресурсам.

Слайд 12
Описание слайда:
Global 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

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

Слайд 15
Описание слайда:
GIL in Python 2.x – 1 CPU

Слайд 16
Описание слайда:
GIL in Python 2.x

Слайд 17
Описание слайда:
GIL in Python 2.x – N CPU

Слайд 18
Описание слайда:

Слайд 19
Описание слайда:
GIL in Python 2.x – N CPU

Слайд 20
Описание слайда:
GIL 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

Слайд 23
Описание слайда:
GIL in Python 3.2 Тайм-аут для переключения между потоками (5 ms) вместо количества операций (100) Рабочая приоритетизация Существенное уменьшение количества сигналов и другого “мусора”

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

Слайд 25
Описание слайда:
GIL 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


Скачать презентацию на тему Python: GIL MultiThreading можно ниже:

Похожие презентации