The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Выпуск Python-библиотек Bind.py и RichConsole.py"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск Python-библиотек Bind.py и RichConsole.py"  +1 +/
Сообщение от opennews (??) on 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
Новость: https://www.opennet.ru/opennews/art.shtml?num=46617

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +1 +/
Сообщение от Аноним (??) on 30-Май-17, 08:02 
Цикличный обход ацикличного графа. Это же великолепно :)
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

20. "Выпуск Python-библиотек Bind.py и RichConsole.py"  –2 +/
Сообщение от Led (ok) on 30-Май-17, 17:26 
> Библиотека для питона чтобы оптимизировать код на питоне. Написана была для лулзов,
> вернее для траллинга

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

22. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +/
Сообщение от myhand (ok) on 30-Май-17, 19:25 
> вернее для траллинга некоторых коментаторов

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


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

12. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +1 +/
Сообщение от Crazy Alex (ok) on 30-Май-17, 15:17 
В наиболее распространённом понимании - это именно переусложнённый код, неудобный в поддержке и (обычно) не дающий значимых преимуществ в эффективности перед более простым подходом.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

7. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +3 +/
Сообщение от Blind Vic (ok) on 30-Май-17, 10:29 
Теперь можно постить новости о своих проектах, beta-quality, just for fun?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Выпуск Python-библиотек Bind.py и RichConsole.py"  –1 +/
Сообщение от Аноним (??) on 30-Май-17, 13:36 
про ричконсол не написано под какие системы ? никс ? вин ?
информацию не нашел ни в тексте новости ни на джите (правда смотрел по диагонали)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

>ни на джите

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

15. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +/
Сообщение от Аноним (??) on 30-Май-17, 16:53 
Если ты сделал это не для лулзов то:

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

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

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

23. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +1 +/
Сообщение от myhand (ok) on 30-Май-17, 19:32 
Интересно, а правилам русского языка вы не следуете тоже, по причине личного неудобства? )
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

25. "Выпуск Python-библиотек Bind.py и RichConsole.py"  –1 +/
Сообщение от Аноним (??) on 30-Май-17, 21:32 
Ты знаешь, да, есть замечания.. 100% кода - это гов.о размером в 300 строк.

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

31. "Выпуск Python-библиотек Bind.py и RichConsole.py"  –2 +/
Сообщение от KOLANICH on 31-Май-17, 10:48 
Толсто.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

21. "Выпуск Python-библиотек Bind.py и RichConsole.py"  +/
Сообщение от myhand (ok) on 30-Май-17, 19:23 
> curses - для псевдографического интерфейса.

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


Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

32. "Выпуск Python-библиотек Bind.py и RichConsole.py"  –1 +/
Сообщение от KOLANICH on 01-Июн-17, 16:49 
Можешь. Но с извращениями.
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

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

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

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

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

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру