LINUX.ORG.RU
ФорумTalks

Чем плох Python?

 ,


4

4

Просьба к Python-хейтерам - вы можете адекватно и по пунктам сформулировать, чем он плох? Чем он хуже по сравнению с Perl, Ruby, Javascript, другими подобными языками?

Я вот раньше думал, что GIL это очень очень плохо. Есть multiprocessing, ликвидирующий нужду в threads которые не работают параллельно (т.е. на разных ядрах) из-за GIL. Но проблема в том что для передачи данных между процессами надо использовать pipes, что учень медленно т.к. там используется pickle для всего и вообще глупо как-то, скорость получается как через usb. Мне тут надо было десятки гигабайт гонять между процессами, так что тормозило это по максимуму.

Но недавно открыл для себя такую вещь как SharedMemory (вроде сравнительно недавно добавили, в 3.8 или около того). Позволяет передавать куски памяти между любыми процессами, ничего не копируя. Правда, сначала надо эту память чем-то заполнить и потом это что-то прочитать. Но на помощь приходит numpy, который умеет создавать свои объекты прямо в этих буферах. А когда данных много, numpy всё равно надо использовать для экономии памяти и скорости.

Так что не знаю теперь, за что питон хейтить…

Хмм, пора заказать еще 64 гига, на 2 оставшихся слота… интересно, почему каждый питон процесс, который импортирует numpy, занимает около гигабайта оперативки?

olegsov
()
Последнее исправление: olegsov (всего исправлений: 1)
Ответ на: комментарий от olegsov

Но на помощь приходит numpy, который умеет создавать свои объекты прямо в этих буферах

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

Я вот раньше думал, что GIL это очень очень плохо. Есть multiprocessing, ликвидирующий нужду в threads которые не работают параллельно (т.е. на разных ядрах) из-за GIL

Бинго! GIL — это не проблема, это симптом проблемы. Проблема заключается в тесно связанном состоянии, в стандартной библиотеке и базовых классах, целиком слепленных из ad-hoc костылей, которые нельзя расширить, использовать повторно, оптимизировать JIT-компилятором. «Развитие» питона в этом направлении гарантировало, что больше никуда и никак он не будет развиваться. По крайней мере если вы не гугл, который может с нуля переписать все базовые костыли питона в специальной модификации для TensorFlow.

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