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

В сети

Пользователей: 120
Из них просматривают:
Аналоги: 30. Видео: 2. Даташиты: 18. Инструкции: 6. Новости: 27. Остальное: 8. Профиль пользователя: 1. Расчёты: 2. Теги: 2. Торрент: 3. Форум: 18. Чат: 3.
Участников: 5
Гостей: 115

an , alex01981 , 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' - файл, модуль окажется недоступным).

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

Разное

Вместо высоковольтного провода можно использовать обычный, пропустив его через трубку от капельницы.

Интересно

Семь раз отмерь, один раз отрежь. И не перепутай!

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