LINUX.ORG.RU

Знатокам Питона - GIL


0

0

Интересует мнение общественности на такой вопрос:

Допустим - запускаем в нескольких потоках TCPServer, экземпляры которого работают независимо друг от друга и не используют общих объектов. То есть необходимости блокирования потоков нет. В таком варианте будут присутствовать косяки связанные с GIL (потеря производительности и т.д.)?

Из того что я пока нарыл в интернете - определенного ответа не нашел. Если кто даст ссылку или на основе собственного опыта растолкует, буду безмерно благодарен.


Теоретически, на IO-bound задачи GIL не распространяется (на время ожидания IO стандартная библиотека освобождает GIL). Правда, сам я не прбовал.

tailgunner ★★★★★
()

Если ты не столкнулся с проблемами с GIL - даже не задумывайся о них. Так как 90% разговоров про GIL - теоретическое нытьё, не более.

По сабжу - у тебя потоки через что сделаны? Threading или multiprocess? Второй меньше зависим от GIL.

anonymous
()

> Допустим - запускаем в нескольких потоках TCPServer

Перед долгоиграющими сисвызовами GIL освобождается, поэтому висящий в одном потоке recv() не помешает другому потоку думать.

экземпляры которого работают независимо друг от друга и не используют общих объектов. То есть необходимости блокирования потоков нет.

Необходимости нет, а GIL есть. Вот если б локи были на каждом объекте, а не на всём интерпретаторе...

const86 ★★★★★
()
Ответ на: комментарий от tailgunner

> Теоретически, на IO-bound задачи GIL не распространяется (на время ожидания IO стандартная библиотека освобождает GIL).

В общем все оказалось гораздо хуже чем я думал http://habrahabr.ru/blogs/python/84629/.

Только в 3.2 немного улучшили ситуацию http://www.dabeaz.com/python/NewGIL.pdf

Так что лучше запускать в отдельных процессах.

Alesh
() автор топика
Ответ на: комментарий от anonymous

По сабжу - у тебя потоки через что сделаны? Threading или multiprocess? Второй меньше зависим от GIL.

Неужели процессы созданный с использованием multiprocess тоже имеет общий GIL с порождающим процессом? Как страшно жить )))

Alesh
() автор топика
Ответ на: комментарий от commit

> Брех*йня, не верьте им! Лже-тесты. Пруфы есть.

Кому «им», чего «не верить» ?

Alesh
() автор топика
Ответ на: комментарий от Alesh

>Неужели процессы созданный с использованием multiprocess тоже имеет общий GIL с порождающим процессом? Как страшно жить )))

Вроде не должны.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.