<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Выпуск Python-библиотек Bind.py и RichConsole.py]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=39164&amp;type=atom" />
	<updated>2017-05-29T15:15:07Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=39164</id>
		<entry>
			<title type="html"><![CDATA[Выпуск Python-библиотек Bind.py и RichConsole.py]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=455473#p455473" />
			<content type="html"><![CDATA[<p><br />&nbsp; &nbsp; Вышла бета-версия библиотеки bind.py, ускоряющей функции, использующие замкнутые переменные, через модификацию их байт-кода. Основной сценарий использования - ускорение программно-сгенерированных функций, например в метаклассах, что позволяет иметь красивый усложнённый код почти без уменьшения производительности во время исполнения, ценой некоторых затрат на инициализацию.&nbsp; &nbsp; &nbsp; Синтетический тест (255 переменных) показал 15% ускорение для замкнутых переменных и 30% для глобальных. Ускорение достигается путём перемещения переменных в константы (проверки, что переменная действительно константа не проводится, будьте аккуратны). Функция допускает использование в качестве декоратора, поддерживается как передача словаря, так и kwargs-синтаксис.&nbsp; &nbsp; &nbsp; Также доступна&nbsp; &nbsp;python-библиотека RichConsole для вывода форматированного текста на консоль. Библиотека позволяет выводить в консоль текст, отформатированный с помощью управляющих последовательностей. Вручную это делать неудобно, так как управляющие последовательности имеют эффект на все последующие символы, т.е. необходимо сбрасывать и восстанавливать состояние в зависимости от текущего и желаемого. Начиная с уровня вложенности 3 это приводит к проблемам в архитектуре программы, препятствуя модуляризации.&nbsp; &nbsp; &nbsp;Данная библиотека позволяет решить эту проблему. Желаемая разметка задаётся в виде ориентированного ациклического графа (обобщение дерева, позволяющее повторно использовать вершины при условии, что это не создаёт циклов), в котором листьями являются строки. В таком виде вывод обрабатывается в программе и рендерится в строку перед отправкой на вывод. При рендеринге происходит обход графа в глубину, применение и откат изменений, создание последовательностей диффов, конвертация в последовательность управляющих последовательностей и оптимизация полученной последовательности с целью минимизации выводимых данных.&nbsp; <br />&nbsp; &nbsp; Источник: <strong>http://www.opennet.ru/opennews/art.shtml?num=46617</strong><br />&nbsp; &nbsp; </p>]]></content>
			<author>
				<name><![CDATA[R2-D2]]></name>
				<uri>https://linuxforum.ru/profile.php?id=40794</uri>
			</author>
			<updated>2017-05-29T15:15:07Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=455473#p455473</id>
		</entry>
</feed>
