Почему компиляция код Python?

232
задан random 29 October 2011 в 17:25
поделиться

6 ответов

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

причина, некоторые файлы не компилируются, состоит в том, что основной сценарий, который Вы вызываете с python main.py, перекомпилирован каждый раз, когда Вы выполняете сценарий. Все импортированные сценарии будут скомпилированы и сохранены на диске.

Важное дополнение Пробел Ben:

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

258
ответ дан Community 23 November 2019 в 03:34
поделиться

.pyc файлом является Python, который был уже скомпилирован в байт-код. Python автоматически выполняет .pyc файл, если он находит один с тем же именем как .py файл, Вы вызываете.

"Введение в Python" говорит это о скомпилированных файлах Python:

программа А не работает немного быстрее, когда она читается из †˜. pyc’ или †˜. файл pyo’ чем тогда, когда это читается из †˜. файл py’; единственная вещь это быстрее о †˜. pyc’ или †˜. файлы pyo’ являются скоростью, которой они загружаются.

преимущество выполнения .pyc файла состоит в том, что Python не должен подвергаться издержкам компиляции его прежде, чем выполнить его. Так как Python скомпилировал бы в байт-код прежде, чем выполнить .py файл так или иначе, не должно быть никакого повышения производительности кроме этого.

, Сколько улучшения можно добраться от использования скомпилированных .pyc файлов? Это зависит от того, что делает сценарий. Для очень краткого сценария, который просто печатает "Привет Мир", компиляция могла составить большой процент общего количества startup-run время. Но стоимость компиляции сценария относительно общего времени выполнения уменьшается для дольше рабочих сценариев.

сценарий, который Вы называете на командной строке, никогда не сохраняется в .pyc файл. Только модули, загруженные тем "основным" сценарием, сохраняются таким образом.

78
ответ дан Bill Karwin 23 November 2019 в 03:34
поделиться

Существует увеличение производительности выполнения скомпилированного Python. Однако при выполнении .py файла как импортированного модуля Python скомпилирует и сохранит его, и, пока .py файл не изменяется, это будет всегда использовать скомпилированную версию.

С любым interpeted языком, когда файл используется, процесс выглядит примерно так:
1. Файл обрабатывается interpeter.
2. Файл компилируется
3. Скомпилированный код выполняется.

, очевидно, при помощи предварительного скомпилированного кода можно устранить шаг 2, это применяет Python, PHP и других.

Heres интересное сообщение в блоге, объясняющее различия , http://julipedia.blogspot.com/2004/07/compiled-vs-interpreted-languages.html
И вот является записью, которая объясняет процесс компиляции Python http://effbot.org/zone/python-compile.htm

9
ответ дан Trevor 23 November 2019 в 03:34
поделиться

Как уже упомянуто, можно получить увеличение производительности с компиляции кода Python в байт-код. Это обычно обрабатывается самим Python для импортированных сценариев только.

Другая причина Вы могли бы хотеть скомпилировать свой код Python, мог быть должен защитить Вашу интеллектуальную собственность от того, чтобы быть скопированным и/или измененный.

можно читать больше об этом в документация Python .

8
ответ дан Simon B. Jensen 23 November 2019 в 03:34
поделиться

Существует, конечно, различие в производительности при выполнении скомпилированного сценария. Если Вы работаете нормальный .py сценарии, машина компилирует его каждый раз, когда это выполняется, и это занимает время. На современных машинах это едва примечательно, но поскольку сценарий растет, это может стать большим количеством проблемы.

7
ответ дан matpie 23 November 2019 в 03:34
поделиться

Да, производительность является главной причиной и, насколько я знаю, единственная причина.

, Если некоторые Ваши файлы не становятся скомпилированными, возможно, Python не в состоянии записать в .pyc файл, возможно, из-за полномочий каталога или чего-то. Или возможно нескомпилированные файлы просто никогда не становятся загруженными... (сценарии/модули только компилируются, когда они сначала загружаются)

2
ответ дан David Z 23 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: