Потому что Я написал здесь часть 1 , Я хотел связаться с частью 2 (эта статья).
В первой части я коснулся размера CPYTHON (при упаковке), но теперь я хочу упомянуть скорость. И я никогда не считал, что скорость настолько критична с Python (особенно CPYTHON), но в некоторых встроенных это наверняка имеет значение.
Если вы запускаете Python больше, чем несколько раз, вы заметили эти .pyc файлы это генерирует. Это байтоносные файлы кэша, которые загружаются в интерпретатор Python. Обычно Python будет смотреть, если есть .pyc Файл и если временная метка (этого файла) новее .py Файл, он запустит это **. Pyc . В противном случае файл повторно генерируется, а затем запускается.
И я никогда не заботился о них, но когда вы являетесь постановлением пакетов, и вам нужно сэкономить на месте на таких вещах, как OpenWRT (и другие встроенные вещи), вы заметите, что исходный файл Python примерно такого же размера, как и .pyc файл. Похоже, что Debian (например) отправляет оба эти файла.
Первоначально я упаковал только исходные файлы, потому что развертывание исходных файлов Python имеет смысл для людей. Вы можете увидеть источник, и вы точно знаете, что вы получаете с CPYTHON и библиотеками.
Конечно, чтобы люди не исчезали из флэш-памяти на своих устройствах при запуске кода Python, байто-компилированные кэши были отключены. Это означает, что запуск программы Python будет включать в себя повторную генерацию этих файлов кэша каждый раз, когда вы запускаете сценарий Python.
Кажется, что поколение этих .pyc дорого. Был отчет, в котором говорилось, что сценарий «Hello World» в Python потребует 500 миллисекунд для начала (на некоторых медленных машинах). При составлении его .pyc И запустив это, это займет 70 миллисекунд. Так что, безусловно, улучшение.
Теперь, что произошло, так это то, что мы перешли с доставки пакетов Python с файлами Source ( .py ) на пакеты с доставкой/упаковкой Python с помощью файлов Byte-Compilled ( .pyc ). Кроме того, каждый пакет Python получит его собственную Python-xxxx-src версия. Таким образом, пользователи, которые хотят, чтобы источники Python могут установить их отдельно. Это лучший компромисс здесь, к:
- Держите пакеты Python максимально маленьким
- иметь некоторую скорость (ну, не ухудшайте)
Для справки, я обнаружил некоторые из старых дискуссий о GitHub о некоторых из них. У них есть какое -то историческое значение для меня. Один встречается с 2014 года, когда я начал: https://github.com/openwrt/packages/issues/474
И о размножаемых сборках Debian, что связано со всеми этими .pyc Файлы: https://github.com/openwrt/packages/issues/5278
Может быть, самое время, чтобы повторно включить старые размноженные усилия для OpenWRT:)
Оригинал: “https://dev.to/commodo/openwrt-python-a-tale-from-a-maintainer-part-2-2kg3”