Форум сайта python.su
Написал две статьи: http://asvetlov.blogspot.com/2011/07/gil.html и http://asvetlov.blogspot.com/2011/07/signal.html
Комментарии и критика — приветствуются.
Офлайн
Очень подробно расписано.
Но зачем он нужен? Что было-бы если работать без gil, например если запустить 2 потока с математической нагрузкой?
В 3.2 потоки ОСи дают маленький плюс, но для 2.х было бы выгодней что-б питон был однопоточный, все равно переключение между питоновскими потоками происходит в одном и том же месте, а ресурсы (процессора) на “висячие” потоки ОСи тратятся. так?
Офлайн
Ещё вопрос появился, можно как-нибудь получиться статистику о конкуренции потоков за gil? Что-б можно было-б вычислить оптимальное кол-во потоков на wsgi.
Офлайн
Без GIL многопоточное приложение сломалось бы на удалении объектов.
Про траты на “висячие” потоки — не совсем оно так. Тут случай запутанный, висеть можно по разному. Если поток уперся в лок, то на него невозможно переключиться. Но в целом для тройки получился менее прожорливый механизм.
Нужная вам статистика — это банальная загрузка процессора. Доведите её до максимальной, вот и все дела.
Офлайн
Андрей СветловНа удалении общих объектов? А если общие объекты удалять при завершении последнего потока?
Без GIL многопоточное приложение сломалось бы на удалении объектов.
Офлайн
Питон не может знать, общий объект или нет. Поэтому удаляет всех одинаково.
Офлайн
Почему у других языков получается удалять объекты без GIL и только у питона с этим какие-то проблемы?
Изучаю конкретно питон всего пару недель, но считаю что в эру многоядерных систем использование GIL критически неудачное решение. Во всём другом питон очень даже нравится
Офлайн
xneo
Питон зарождался не в эту эпоху. В эту эпоху есть PyPy - неофициальная версия Python без GIL
Офлайн
xneoНа самом деле не настолько важно. Python вообще не очень производительный. Критические к времени части все равно пишутся на C. И если вам надо вы можете загрузить ядра на более нижнем уровне. Точнее вы сначала перепишете критические части на C (получите прирост 3-100 раз). А потом будете использовать треды.
эру многоядерных систем использование GIL критически неудачное решение
Офлайн
> Складывается впечатление что threding в питоне вообще не нужен
Потоки нужны, но не для распараллеливания. ИХМО из-за GIL их можно рассматривать как своеобразную реализацию асинхронности.
Офлайн