URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 111359
[ Назад ]

Исходное сообщение
"Выпуск Python-библиотек Bind.py и RichConsole.py"

Отправлено opennews , 30-Май-17 01:59 
Вышла бета-версия библиотеки bind.py (https://github.com/KOLANICH/bind.py), ускоряющей функции, использующие замкнутые переменные, через модификацию их байт-кода. Основной сценарий использования - ускорение программно-сгенерированных функций, например в метаклассах, что позволяет иметь красивый усложнённый код почти без уменьшения производительности во время исполнения, ценой некоторых затрат на инициализацию.  


Синтетический тест (255 переменных) показал 15% ускорение для замкнутых переменных и 30% для глобальных. Ускорение достигается путём перемещения переменных в константы (проверки, что переменная действительно константа не проводится, будьте аккуратны). Функция допускает использование в качестве декоратора, поддерживается как передача словаря, так и kwargs-синтаксис.

Также доступна (https://github.com/KOLANICH/RichConsole)   python-библиотека RichConsole для вывода форматированного текста на консоль. Библиотека позволяет выводить в консоль текст, отформатированный с помощью управляющих последовательностей. Вручную это делать неудобно, так как управляющие последовательности имеют эффект на все последующие символы, т.е. необходимо сбрасывать и восстанавливать состояние в зависимости от текущего и желаемого. Начиная с уровня вложенности 3 это приводит к проблемам в архитектуре программы, препятствуя модуляризации.


Данная библиотека позволяет решить эту проблему. Желаемая разметка задаётся в виде ориентированного ациклического графа (обобщение дерева, позволяющее повторно использовать вершины при условии, что это не создаёт циклов), в котором листьями являются строки. В таком виде вывод обрабатывается в программе и рендерится в строку перед отправкой на вывод. При рендеринге происходит обход графа в глубину, применение и откат изменений, создание последовательностей диффов, конвертация в последовательность управляющих последовательностей и оптимизация полученной последовательности с целью минимизации выводимых данных.


URL: https://github.com/KOLANICH/bind.py
Новость: http://www.opennet.ru/opennews/art.shtml?num=46617


Содержание

Сообщения в этом обсуждении
"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено anonymous yet another , 30-Май-17 07:28 
> ... ориентированного ациклического графа (обобщение дерева, позволяющее повторно использовать вершины при условии, что это не создаёт циклов),

Неожиданно-оригинальное определение ациклического графа.


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Аноним , 30-Май-17 08:02 
Цикличный обход ацикличного графа. Это же великолепно :)

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Хорошийкомп , 30-Май-17 08:55 
>Ускорение достигается путём перемещения переменных в константы (проверки, что >переменная действительно константа не проводится, будьте аккуратны)

Каких только пулеметов не наизобретают люди, чтоб только не учить C++


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 30-Май-17 09:44 
Библиотека для питона чтобы оптимизировать код на питоне. Написана была для лулзов, вернее для траллинга некоторых коментаторов пулл-реквестов, которым в питоне нужна максимальная производительность. Причём тут C++?

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Led , 30-Май-17 17:26 
> Библиотека для питона чтобы оптимизировать код на питоне. Написана была для лулзов,
> вернее для траллинга

Так и сам питон написан для лулзов и троллинга.


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено myhand , 30-Май-17 19:25 
> вернее для траллинга некоторых коментаторов

За минрепы их, окаянных!



"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 30-Май-17 09:52 
> что позволяет иметь красивый усложнённый код

В оригинале новости было "overиженеренный". Overинженеренный - на мой взгляд, это где многие обойдутся решением "в лоб", но где так не сделано. Но overиженеренный - не значит "усложнённый", такой код проще в поддержке и отладке.


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Аноним , 30-Май-17 12:46 
> Но overиженеренный - не значит "усложнённый", такой код проще в поддержке и отладке.

Он по определению сложнее и в поддержке, и в отладке, так как использует лишние слои абстракций.


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Crazy Alex , 30-Май-17 15:17 
В наиболее распространённом понимании - это именно переусложнённый код, неудобный в поддержке и (обычно) не дающий значимых преимуществ в эффективности перед более простым подходом.

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Blind Vic , 30-Май-17 10:29 
Теперь можно постить новости о своих проектах, beta-quality, just for fun?

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 30-Май-17 15:25 
> Теперь можно постить новости о своих проектах, beta-quality, just for fun?

Вообще-то уже давно.


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Аноним , 30-Май-17 13:36 
про ричконсол не написано под какие системы ? никс ? вин ?
информацию не нашел ни в тексте новости ни на джите (правда смотрел по диагонали)

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 30-Май-17 15:24 
>про ричконсол не написано под какие системы ? никс ? вин ?

Любые. Контрольные коды ecma - это фича эмулятора терминала, а не ОС. В самой же либе я не использовал ОС-зависимой фигни. Из коробки контрольные коды доступны на никсах. У винды вместо контрольных кодов дёргаются функции, переключающие цвет. Но на винде тоже могут быть доступны, если использовать совместимый эмулятор терминала. https://stackoverflow.com/questions/16755142/how-to-make-win...

>ни на джите

git произносится [ɡɪt]


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Аноним , 30-Май-17 16:53 
Если ты сделал это не для лулзов то:

Сделай одолжение этому миру - удали эту х**ню, чтобы никто не знал, что это существовало..

И почитай для начала https://www.python.org/dev/peps/pep-0008/


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 30-Май-17 17:20 
> Если ты сделал это не для лулзов то:
> Сделай одолжение этому миру - удали эту х**ню, чтобы никто не знал,
> что это существовало..

Если есть конструктивные замечания - на гитхаб (или тут). Нет - сам знаешь куда.

> И почитай для начала https://www.python.org/dev/peps/pep-0008/

Я недостаточно сектант для того, чтобы следовать долбанутым рекомендациям, лично мне не удобным. Не нравится мой стиль кода - обмажься autopep8.


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено myhand , 30-Май-17 19:32 
Интересно, а правилам русского языка вы не следуете тоже, по причине личного неудобства? )

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Аноним , 30-Май-17 21:32 
Ты знаешь, да, есть замечания.. 100% кода - это гов.о размером в 300 строк.

И, пожалуйста, брось программирование, оно не для тебя! :)


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 31-Май-17 10:48 
Толсто.

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено myhand , 30-Май-17 16:54 
> Также доступна python-библиотека RichConsole для вывода форматированного текста на консоль.

Я, конечно, извиняюсь, но разве curses выкинули из стандартной библиотеки?!


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 30-Май-17 17:14 
curses - для псевдографического интерфейса. Я же делал приложение с консольным текстовым интерфейсом (пока ещё не в паблике, ждёт ещё одну зависимость и модно будет релизить), и мне нужно было раскрасить его вывод, сделать "подсветку синтаксиса" для улучшения восприятия. Гуглинг дал только colorama и подобные ей либы. У них есть перечисленные ограничения. Пришлось написать свою.

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено myhand , 30-Май-17 19:23 
> curses - для псевдографического интерфейса.

Ви таки хотите сказать, что с ей я не могу текст в консольке раскрасить?



"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено KOLANICH , 01-Июн-17 16:49 
Можешь. Но с извращениями.

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено myhand , 04-Июн-17 15:16 
> Можешь. Но с извращениями.

Например, какими?


"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Ordu , 30-Май-17 17:16 
Выкинули вряд ли, но он давно просится на выкидывание. ncurses родом из 80-х, и если её используют и по сей день, то лишь потому, что возможности "красивого" вывода в консоль никому особо не нужны.
А цветной текст выводить в консоль -- много ума не нужно, и ncurses выглядит безумным оверхедом. Самое сложное -- выудить из terminfo управляющие коды, и поскольку всем лень заниматься этим, то либо они пишут '\e[...', либо используют ncurses.
Более интересный вопрос в том, зачем нужен этот RichConsole, если он использует подход с жёстко прошитыми управляющими кодами, и даже не парится заглянуть в terminfo. С жёстко прошитыми я и сам с усам, и никаких библиотек мне не надо. Даже если писать на бидоне.
То есть, идея стилей приятна, в том смысле, что позволяет отделить концептуально цвет выделения от смысла выделения, а связь между ними задавать конфигом. Но реализация этой идеи оказывается бесполезной, потому что она полагается на то, что контрол-коды везде одинаковы. Может быть так оно и есть де факто -- я не знаю. Но если мне понадобится выводить цветной текст в консоль, то не поверю и всё равно возьму ncurses.

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено proud_anon , 31-Май-17 07:09 
"... возможности "красивого" вывода в консоль никому особо не нужны. А цветной текст выводить в консоль -- много ума не нужно... " откуда мамы таких аналитиков достают?
Сидит крендель за ПК из ближайшего ашана и пребывает в полной уверенности что у всего остального человечества точно такая же железная конфигурация.
$ echo $TERM
dumb
это про тебя

"Выпуск Python-библиотек Bind.py и RichConsole.py"
Отправлено Ordu , 31-Май-17 08:43 
> "... возможности "красивого" вывода в консоль никому особо не нужны. А цветной
> текст выводить в консоль -- много ума не нужно... " откуда
> мамы таких аналитиков достают?
> Сидит крендель за ПК из ближайшего ашана и пребывает в полной уверенности
> что у всего остального человечества точно такая же железная конфигурация.
> $ echo $TERM
> dumb
> это про тебя

Хы. Ты точно когда показывал пальцем, не перепутал направление? Мне почему-то кажется, что ты не осилил прочитать мой коммент целиком, прежде чем лезть с критикой типа "демонстрация выдающихся знаний".