Пока вы выполняете тривиальные объемы работы в своем "основном скрипте" (тот, который вы напрямую вызываете с помощью python
и который получает __name__
из __main__
), вам не нужно беспокоиться о "кэшировании предварительноскомпилированный байт-код python ": когда вы import foo
, foo.py
сохраняются на диск (в том же каталоге), что и foo.pyc
, при условии, что этот каталог доступен для записи вами, поэтому и без того дешевая компиляция в байт-код происходит один раз и «навсегда после» Python будет загружать foo.pyc
непосредственно в каждом новом процессе, который выполняет import foo
- в пределах одного процесса каждый import foo
, кроме первого, является просто быстрым поиском в словаре в памяти (sys.module
словарь).Основная идея производительности в Python: гарантирует, что каждый бит существенного кода происходит внутри def
операторов в модулях - не не имеет ни одного на верхнем уровне модуля, в основном скриптеили особеннов пределах exec
и eval
операторов / выражений! -).
У меня нет тестов для PHP против Python, но я заметил, что Python продолжает довольно заметно оптимизироваться с каждым новым выпуском, поэтому убедитесь, чтоВы сравниваете недавний выпуск (в идеале 2.7, по крайней мере, 2.6), если вы хотите увидеть «быстрый Python».Если вы пока не нашли его достаточно быстрым, cython
(диалект Python, предназначенный для компиляции непосредственно в C, а затем в машинный код с некоторыми ограничениями) сегодня является самым простым способом выборочной оптимизации тех модулей, профилирование которых показывает, что вам нужноэто.