Python:GIL MultiThreading Stacy Khomenko, GlobalLogic.

Презентация:



Advertisements
Похожие презентации
МультиТредовые архитектуры.
Advertisements

Операционные системы Процессы и потоки Скрипов Сергей Александрович 2009.
Взаимодействующие параллельные процессы
Взаимодействующие параллельные процессы. Параллельные процессы P1 P2 Q1 Q2 Последовательные процессы Логические параллельные процессы P1 P2 Q1Q2 Физические.
Учебный курс Операционные среды, системы и оболочки Лекция 6 Лекции читает доктор технических наук, профессор Назаров Станислав Викторович.
О ПРЕДЕЛЕНИЕ. Операционная система, сокр. ОС (англ. operating system, OS ) комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают.
Учебный курс Операционные среды, системы и оболочки Лекция 7 Лекции читает доктор технических наук, профессор Назаров Станислав Викторович.
POSIX Threads. Общая модель Программа Общая память Поток 1 CPU Поток 2 Поток N Потоки – наборы инструкций, исполняющиеся на CPU. Все потоки одной программы.
6. Средства синхронизации и взаимодействия процессов 6.1. Проблема синхронизации Процессам Процессам часто нужно взаимодействовать друг с другом, например,
Usage java.util.concurrence in Java For students of universities Author: Oxana Dudnik.
Процессор П1П2П3П4П2П1 Контроллер Завершение операции ввода-вывода Вызов операции ввода-вывода Операция ввода-вывода Синхронное выполнение операции ввода-вывода.
Учебный курс Операционные среды, системы и оболочки Лекция 5 Лекции читает доктор технических наук, профессор Назаров Станислав Викторович.
Управление процессами 3.Взаимодействие процессов: синхронизация, тупики 3.1.Разделение ресурсов 3.2.Взаимное исключение Проблемы реализации взаимного.
Взаимодействие процессов: синхронизация, тупики. Параллельные процессы Параллельные процессы – процессы, выполнение которых хотя бы частично перекрывается.
Управление процессами 3.Взаимодействие процессов: синхронизация, тупики 3.1.Разделение ресурсов 3.2.Взаимное исключение Проблемы реализации взаимного.
Лекция 15 Организация параллельных взаимодействующих вычислений.
Выполнили: Мартышкин А. И. Кутузов В. В., Трояшкин П. В., Руководитель проекта – Мартышкин А. И., аспирант, ассистент кафедры ВМиС ПГТА.
Операционные системы Процессы и потоки Скрипов Сергей Александрович 2009.
Классификация Базу. По мнению А.Базу (A.Basu), любую параллельную вычислительную систему можно однозначно описать последовательностью решений, принятых.
Основы современных операционных систем Лекция 8. (C) В.О. Сафонов, Понятие процесса Состояния процесса Блок управления процессом Диспетчеризация.
Транксрипт:

Python:GIL MultiThreading Stacy Khomenko, GlobalLogic

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

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

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

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

Mutex

Мониторы

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

Активные объекты

Global Interpreter Lock

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

Global Interpreter Lock GIL используется в Cpython, Ruby, PHP GIL в Python v.2.x и v.3.2 различается существенно Python branches 2.x и v.3.x – обратно несовместимы

GIL in Python 2.x

Одновременно исполняется лишь поток интерпретатора 100 тиков (инструкций) Освобождается на время операций ввода- вывода, простых арифметических операций

GIL in Python 2.x – 1 CPU

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

GIL in Python 2.x – N CPU Параллельный запуск на 2х процессорном PC Выполнение отнимает 30 sec

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

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

Почему такой алгоритм GIL? Guido van Rossum: … Нужно переписать половину интерпетатора – трудоемко В результате замедлится выполнение всех инструкций Python – бессмысленно Используйте модули processing, parallelpython, Pypar, pyMPI Возьмите Jython, IronPython, etc и боритесь с dead-lockами…

GIL in Python 3.2

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

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 Beazley and Andrew Svetlov