LINUX.ORG.RU

Python.GIL. Доколе?


0

1

А вот скажите, хлопцы, почему разработчики CPython до сих пор не то что не избавились от этого камня на своих ногах, но и даже не собираются от него избавиться? Хоть вы мне расскажите, куда катится наш мир.


Ответ на: комментарий от tailgunner

Парсеры, зараза, тормозят у меня. Вот прямо сейчас и тормозят. Тот самый BeautifulSoup. И ядер-то поболее одного (ажно восемь виртуальных ядер), а толку и нету.

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

Можно multiprocessing - так там тоже изврат. Да и не всякие данные можно запиклить опять же.

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

> Лучше ты расскажи, чем именно тебе мешает GIL.

Тёмная сторона Силы манит тебя, падаван.

Отвечать в стиле «А что тут плохого?» — это так в духе бздунов, лиспачей и прочего сомнительного сброда, но не Ъ-джедаев. Нет журналирования, множественных таблиц маршрутизации, драйверов WiFi? — Они не нужны. Отсутствует статическая типизация? — Она для быдлокодеров. Блокировка интерпретатора? — А что в ней плохого? Тёмная сторона Силы соблазняет тебя. Противься ей.

Если серьёзно — GIL делает программы на Python'е абсолютно не масштабируемыми в смысле SMP. Подробности здесь и здесь.

И если ты начнёшь доказывать, что SMP-масштабируемость не нужна, то, боюсь, одним джедаем на этом свете станет меньше. Не делай анонимусу грустно.

anonymous
()

Были попытки избавиться. Но в итоге тормозило чуть ли в два раза больше. Поэтому воспринимай GIL как особенность языка, которая позволяет забыть о синхронизации и расслабиться.

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

SMP-масштабируемость не нужна

99% разработчикам на питоне она не нужна. Задачи просто не те.

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

> Отвечать в стиле «А что тут плохого?» — это так в духе бздунов, лиспачей и прочего сомнительного сброда

Смотря с какой целью. Вдруг у человека вычислительная задача - тогда ему можно дать ссылку вроде http://www.scipy.org/Cookbook/Multithreading и спросить о результатах %)

А чем GIL плох «вообще», я и сам знаю.

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

Кстати, вычислительные задачи меня тоже заставляли делать. Как раз на SciPy. Только тогда я не знал об этой ссылке и хотел сделать через multithreading. Не тут-то было, потому как объекты из SciPy отказывались по-человечески и запихиваться в тамошние map'ы. Потому у меня всё тоже с особым цинизмом тормозило. Я успевал немного погулять по коридорам своего заведения или попить чаю, пока машина что-то считала. Но я всё равно с грехом пополам посчитал и отложил горькие мысли об этом.

А теперь у меня есть много-много BeautifulSoup. Чует моё сердце, придётся мне юзать parallel-python.

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

Потому что ты трогаешь себя ночью.

1. Юзай lxml вместо BeautifulSoup. 2. Юзай multiprocessing вместо threading.

Не стоит благодарности. Твоя бабушка.

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

> Обоснуй, интересно даже стало )

Те, кто в теме, и так знают, а те, у кого праздное любопытство, строем идут в гугль.

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

Действительно интерестно как одно ядро стало быстрее многих. Короче понятно, не баг или кривой дизайн, без которого обошлись другие, а фича

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

>Действительно интерестно как одно ядро стало быстрее многих.

Меня забавляет слепая вера во всемогущий параллелизм и многоядерность =)
По идее, данный фокус должны показывать на первой лабе по курсу аля «распараллеливание вычислений», чтоб человек потом не удивлялся реальной жизни...

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

>Я не слышал что там вычищен GIL

Ну, собственно, не раз слышал, что там с GIL проблем нет и он вполне масштабруется. EVE Online же, вроде, на Stackless, нет?

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

Это из другого тазика. В Stackless есть легковевные треды типа эрланга, поэтому он масштабируется по количеству одновнеменных сессий, а не по числодроблению.

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

> Ну, собственно, не раз слышал, что там с GIL проблем нет и он вполне масштабруется.

Он масштабируется не из-за отсуствия GIL, а из-за маленьких стеков (похоже на Эрланг).

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

> Меня забавляет слепая вера во всемогущий параллелизм и многоядерность =)

Ну, ввели бы нам разработчики что-нибудь типа GIL.switch_on(False, если надо запиливать на многих потоках. Так нет, хрен-то.

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

он вполне масштабруется

Из за организации выполнения кода тасклетами. Причем (!) они всё равно выполняются в один поток. То есть утилизовать все ядра так просто не получится.

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

>Ну, ввели бы нам разработчики

Вам разработчики разработали кучу других языков, на которых вы можете решить свои проблемы удобным для вас способом

Но вера в магический выключатель тоже забавна, спасибо.

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

Хотя можешь попытаться реализовать - опыт там сын ошибок трудных и все такое...

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

>Причем (!) они всё равно выполняются в один поток. То есть утилизовать все ядра так просто не получится.

Значит - запускать на одной машине N нод, где N = число ядер? ;)

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

> Вам разработчики разработали кучу других языков, на которых вы можете решить свои проблемы удобным для вас способом

За что вы так ненавидите Python?

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

А теперь у меня есть много-много BeautifulSoup. Чует моё сердце, придётся мне юзать parallel-python.

Объясни, что хочешь от CPython. Чтобы он тебе сам распараллелил в принципе однопоточный парсер?

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

>Чтобы он тебе сам распараллелил в принципе однопоточный парсер?

Зачем? Я и во много потоков работать мог бы.

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