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

В сети

Пользователей: 79
Из них просматривают:
Аналоги: 29. Даташиты: 4. Инструкции: 5. Новости: 18. Остальное: 6. Программы: 1. Профиль пользователя: 1. Торрент: 1. Форум: 11. Чат: 3.
Участников: 5
Гостей: 74

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

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

Разное

Ремонтируя импульсный блок питания (ИБП), отключите его от компьютера и нагрузите лампочкой 75 Вт на 220 В.

Интересно

Если у вас нет жидкого канифольного флюса, его легко изготовить самостоятельно.

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