1. Когда Python получает команду запустить сценарий:
- Сценарий компилируется в байт код
- Далее байт код будет передан виртуальной машине
Байт-код — это низкоуровневое платформонезависимое представление исходного кода программы. Трансляция в байт код производится для увеличения производительности, т.к. байт-код выполняется быстрее, чем исходные инструкции в текстовом файле.
Байт-код сохраняется в файле с расширением .pyc, после запуска скрипта *.py. При повторном запуске скрипта интепретатор не будет компилировать код заново, а использует уже имеющийся *.pyc.
- если *.pyc отсутствует, то он будет создан при запуске файла содержащего сценарий на языке python;
- если *.pyc не удаётся создать и сохранить на диске, то байт-код будет записан в память и уничтожен после завершения программы;
- о необходимости заново компилировать исходный текст сценария или не компилировать, Python узнаёт сравнивая время последнего изменения файла с исходным кодом и время последнего изменения файла с байт кодом.
2. Подробнее о виртуальной машине (PVM — python virtual maschine)
Выполнение байт-кода производится виртуальной машиной:
file.py → file.pyc → PVM
- байт-код НЕ является двоичным машинным кодом. Байт код внутреннее представление программы на языке Python