Разделы инструкций

В сети

Пользователей: 127
Из них просматривают:
Аналоги: 43. Даташиты: 21. Инструкции: 11. Новости: 21. Остальное: 5. Ошибки: 1. Программы: 2. Профиль пользователя: 4. Торрент: 2. Форум: 15. Чат: 2.
Участников: 4
Гостей: 123

KT315 , Google , wolf170571 , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Оглавление

6.3. "Компилированные" файлы

Для ускорения запуска программ, использующих большое количество модулей, если уже существует файл с именем spam.pyc в том же каталоге, где найден spam.py, считается, что он содержит "байт-компилированный"” модуль spam. Если такого файла нет, то он создается, и время последнего изменения 'spam.py' записывается в созданном 'spam.pyc' (при последующем использовании, '.pyc' - файл игнорируется, если исходный '.py' - файл был изменён).

Обычно Вам не надо ничего делать для создания 'spam.pyc'. Как только 'spam.py' успешно откомпилирован, интерпретатор пытается записать компилированную версию в 'spam.pyc'. Если интерпретатору по каким-либо причинам это не удается (например, недостаточно пользовательских полномочий), ошибки не возникает. Если же файл записан не полностью, далее он распознается как неработоспособный и игнорируется. Содержимое байт-компилированных файлов является платформно-независимым (но может быть разным для разных версий интерпретатора), так что каталог с модулями может совместно использоваться машинами с разными архитектурами.

Несколько тонкостей для опытных пользователей:

1) Если интерпретатор вызывается с опцией -O или переменная окружения PYTHONOPTIMIZE имеет непустое значение, интерпретатор генерирует оптимизированный байт-код и сохраняет его в '.pyo' - файлах. В настоящий момент оптимизация даёт не слишком много: при этом удаляются инструкции assert, игнорируются инструкции 'if __debug__: ...', не сохраняется информация о нумерации строк в исходных '.py' - файлах. В этом случае оптимизируются все используемые модули, '.pyc' - файлы игнорируются.

2) Опция -OO приводит к тому, что интерпретатор выполняет оптимизацию которая, в некоторых (редких) случаях, может привести к сбоям в работе программ. В настоящий момент, помимо действий, выполняемых с опцией -O, удаляются строки документации, давая более компактные '.pyo' - файлы. Так как некоторые программы могут рассчитывать на наличие строк документации, используйте эту опцию с осторожностью.

3) Для программы, запускаемой из командной строки, байт-код никогда не записывается в '.pyc' - или '.pyo' - файл. Поэтому, если Вы хотите уменьшить время, требующееся для загрузки, поместите большую часть кода в модуль, оставив в программе лишь загрузочную часть, которая импортирует этот модуль.

4) Возможно использование модуля (или запуск программы) при наличии '.pyc' - файла (или '.pyo' - файла, если используется одна из опций -O или -OO), даже если отсутствует '.py' - файл. Таким образом, Вы можете распространять библиотеки и программы в виде, из которого относительно сложно извлечь информацию об используемых алгоритмах.

5) Модуль compileall позволяет создать '.pyc' - (или '.pyo') файлы для всех модулей в каталоге. Это может быть особенно полезно, если вы хотите ограничить доступ к каталогу, в котором находится библиотека. Заметим, что интерпретатор не будет использовать '.pyc' - файлы, если он запущен с включенной оптимизацией, и '.pyo' - файлы, если оптимизация выключена (если же отсутствует '.py' - файл, модуль окажется недоступным).

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

Обработанные водным раствором щелочи стальные контакты (например, батарейного отсека переносной магнитолы или пульта ДУ) никогда не заржавеют.

Интересно

Если "ревёт" один из дросселей резонансного стабилизатора, забейте деревянный клин между его катушками.

Похожие инструкции