Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемГерман Филонов
1 Python:GIL MultiThreading Stacy Khomenko, GlobalLogic
2 Многопоточность
3 Multithreading Потоки нужны для произведения параллельных вычислений Потоки нужно: Создавать Ожидать Завершать
4 Совместное использование ресурсов Взаимоисключения (mutex) Критическая секция (fast mutex, futex) Семафоры (пул ресурсов) События
5 Изменяемые объекты Неизменяемые Изменяемые, не имеющие представления о потоках Мониторы Активные объекты
6 Mutex
7 Мониторы
8 Thread Pools – concurrent.futures Новинка Python 3.2 future - отложенное значение
9 Активные объекты
10 Global Interpreter Lock
11 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 Одновременно исполняется лишь поток интерпретатора 100 тиков (инструкций) Освобождается на время операций ввода- вывода, простых арифметических операций
15 GIL in Python 2.x – 1 CPU
16 GIL in Python 2.x Последовательный запуск Выполнение отнимает 13 sec
17 GIL in Python 2.x – N CPU Параллельный запуск на 2х процессорном PC Выполнение отнимает 30 sec
19 GIL in Python 2.x – N CPU Проблема Control-C
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 Тайм-аут для переключения между потоками (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
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.