Народ, я тут залез в дебри оптимизации моей Python проги, и наткнулся на тему precompiling standard library python что это вообще значит? Когда это имеет смысл делать и какие от этого профиты? Желательно с примером кода, плиз. Очень надо!
Народ, я тут залез в дебри оптимизации моей Python проги, и наткнулся на тему precompiling standard library python что это вообще значит? Когда это имеет смысл делать и какие от этого профиты? Желательно с примером кода, плиз. Очень надо!
Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat
А ТАКЖЕ: Канал о Python, статьи и книги ==>> @pythoneer_ru
Короче, когда ты пишешь питоновский код, интерпретатор каждый раз компилит его заново при запуске. Precompiling (предварительная компиляция) стандартной библиотеки включает в себя компиляцию этих модулей в байткод и сохранение их в .pyc файлы. Это помогает ускорить импорт модулей, потому что они уже в байткоде. Вот пример кода:
После этого создаётся .pyc файл, который легче и быстрее грузится. Если твой скрипт постоянно использует какие-то модули, предварительная компиляция может реально ускорить работу.Программный код:
import py_compile
py_compile.compile('example.py')
Норм объяснил! А еще, если у тебя большая кодовая база, то precompiling помогает избежать постоянного перекомпилирования тех же самых файлов. Так что на больших проектах это прям мастхэв штука!Сообщение от Saphira
В общем, это реально толковая вещь. Особенно если ты деплоишь на серваки, там можно весь stdlib перекомпилить. Это ускоряет запуск скриптов, так что у тебя юзеры довольны. Используй команду python -m compileall, чтобы сразу много файлов компилить.
Йоу, братан, а compileall прям все компилит? Не знал, что так можно. Надо бы протестить на своем проекте, мб ускорится реально.Сообщение от BehemothBane
Precompiling это топчик, когда работаешь с фреймворками типа Django или Flask. Там даже маленькое ускорение импорта даёт свои фрукты. Попробуй ещё в virtualenv использовать, так прям кайф!
Хаха, брат, прям мои мысли читаешь. В виртуалке precompile прям как песня звучит. Делал так, шикарно пашет.Сообщение от Заблудшая
Ну и раз уж заговорили об этом, советую автоматизировать precompiling через СI (Continuous Integration). Короче, накатай скрипт, чтобы после каждого пуша в репу все нужное компилилось. Это сэкономит кучу времени в будущем.
Чувак, ты как раз в точку! Я думаю автоскриптирование тут рулит. Лень вручную каждый раз компилить же, а так — огонь.Сообщение от MultipleMan