Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2011 00:16:04

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

GIL

Написал две статьи: http://asvetlov.blogspot.com/2011/07/gil.html и http://asvetlov.blogspot.com/2011/07/signal.html

Комментарии и критика — приветствуются.



Офлайн

#2 Июль 5, 2011 06:45:06

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

GIL

Очень подробно расписано.
Но зачем он нужен? Что было-бы если работать без gil, например если запустить 2 потока с математической нагрузкой?

В 3.2 потоки ОСи дают маленький плюс, но для 2.х было бы выгодней что-б питон был однопоточный, все равно переключение между питоновскими потоками происходит в одном и том же месте, а ресурсы (процессора) на “висячие” потоки ОСи тратятся. так?

Офлайн

#3 Июль 5, 2011 06:50:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

GIL

Ещё вопрос появился, можно как-нибудь получиться статистику о конкуренции потоков за gil? Что-б можно было-б вычислить оптимальное кол-во потоков на wsgi.

Офлайн

#4 Июль 5, 2011 11:21:07

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

GIL

Без GIL многопоточное приложение сломалось бы на удалении объектов.
Про траты на “висячие” потоки — не совсем оно так. Тут случай запутанный, висеть можно по разному. Если поток уперся в лок, то на него невозможно переключиться. Но в целом для тройки получился менее прожорливый механизм.

Нужная вам статистика — это банальная загрузка процессора. Доведите её до максимальной, вот и все дела.



Офлайн

#5 Июль 5, 2011 11:44:44

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

GIL

Андрей Светлов
Без GIL многопоточное приложение сломалось бы на удалении объектов.
На удалении общих объектов? А если общие объекты удалять при завершении последнего потока?

Офлайн

#6 Июль 5, 2011 11:47:57

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

GIL

Питон не может знать, общий объект или нет. Поэтому удаляет всех одинаково.



Офлайн

#7 Сен. 21, 2015 22:37:19

xneo
Зарегистрирован: 2015-09-20
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

GIL

Почему у других языков получается удалять объекты без GIL и только у питона с этим какие-то проблемы?

Изучаю конкретно питон всего пару недель, но считаю что в эру многоядерных систем использование GIL критически неудачное решение. Во всём другом питон очень даже нравится

Офлайн

#8 Сен. 21, 2015 23:45:06

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

GIL

xneo
Питон зарождался не в эту эпоху. В эту эпоху есть PyPy - неофициальная версия Python без GIL



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Сен. 22, 2015 09:49:44

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

GIL

xneo
эру многоядерных систем использование GIL критически неудачное решение
На самом деле не настолько важно. Python вообще не очень производительный. Критические к времени части все равно пишутся на C. И если вам надо вы можете загрузить ядра на более нижнем уровне. Точнее вы сначала перепишете критические части на C (получите прирост 3-100 раз). А потом будете использовать треды.

Комментарии по статям.
Мы уже обсуждали, но следует наверное отметить, что для windows, у которого как отмечено свои тараканы, порождение процесса крайне дорогая операция, что сильно ограничивает применение multiprocessing. Не стоит забывать что при этом используется другой механизм разделения данных, который кардинально меняет архитектуру приложения. Так что трудно согласится что этот подход лучше чем использование C-API.

Складывается впечатление что threding в питоне вообще не нужен, и причина его сохранения чисто обратная совместимость (если надо треды я отлично и из C запущу). Его могут заменить поддержка coroutines и механизмы передачи сообщений. Что-то типа mpi, zeromq или pyro4 например. Вы согласитесь с таким взглядом на проблему?



Офлайн

#10 Сен. 22, 2015 10:54:11

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

GIL

> Складывается впечатление что threding в питоне вообще не нужен
Потоки нужны, но не для распараллеливания. ИХМО из-за GIL их можно рассматривать как своеобразную реализацию асинхронности.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version