LINUX.ORG.RU

Как-то gil выпили и заменили на кучу локов, это замедлило выполнение однопоточных программ и это посчитали недопустимым.

Back in the days of Python 1.5, Greg Stein actually implemented a comprehensive patch set (the “free threading” patches) that removed the GIL and replaced it with fine-grained locking. Adam Olsen recently did a similar experiment in his python-safethread project. Unfortunately, both experiments exhibited a sharp drop in single-thread performance (at least 30% slower), due to the amount of fine-grained locking necessary to compensate for the removal of the GIL.

https://docs.python.org/3/faq/library.html#can-t-we-get-rid-of-the-global-int...

pawnhearts ★★★★★
()

есть asyncio: никаких потоков, буст минимум в два раза, но только за счет операций с сокетами

tz4678 ★★
()

Проявляет? Да :) Замедляет? Нет. Есть Jython - реализация Python на JVM - в нём нет GIL. В PyPy тоже свои чудеса JIT-комплятора, так что, вам стоит попробовать то, что я перечислил, если вы будете писать многопоток. Но, вообще, крайне не рекомендую питон для таких вещей, но в одно потоке всё нормально (и медленно с обычным CPython).

menangen ★★★★★
()

В 1 потоке ты видишь только преимущества GIL — всё работает быстро и эффективно. В сишном коде освобождают гил, так что во много потоков ты тоже можешь не замечать его очень долго и успешно. Если используешь сишные батарейки. Если не используешь, ты быстро заметишь что производительность значительно падает из-за GIL и ресурсы более ограничены чем ожидалось. Но типично решается запуском нескольких обособленных процессов, каждый будет со своим GIL.

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

Jython не очень, из живых альтернативных реализаций разве что ironpython. Но дотнет тот же мусор что и жаба сам по себе. Лучше взять cython и наслаждаться производительностью сишки с минимальными изменениями в коде (гил тоже можно освобождать).

anonymous
()

Не влияет GIL. В однопоточной программе блокировать нечего.

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