Каждый раз ли Python vm компилирует метод? - PullRequest
1 голос
/ 05 февраля 2011

Если у меня есть функция, которая вызывается в нескольких местах в моем модуле, виртуальная машина компилирует ее в собственный код только при первом выполнении функции и затем использует обналиченный код при других вызовах? (как JIT-компилятор .NET)

1 Ответ

9 голосов
/ 05 февраля 2011

В CPython (стандартная реализация Python) при первом импорте модуля Python он компилируется в байт-код и сохраняется в файле .pyc. После этого файл .pyc читается и интерпретируется виртуальной машиной при необходимости. После считывания .pyc в память байт-код находится в памяти и интерпретируется виртуальной машиной при вызове функции.

CPython никогда не компилирует код Python в собственный исполняемый код.

...