Подтвердить что ты не робот

В чем преимущество установки zip_safe в True при упаковке проекта Python?

В документации setuptools указано только:

Для максимальной производительности пакеты Python лучше всего устанавливаются в виде zip файлов. Однако не все пакеты могут работать в сжатой форме, поскольку они могут рассчитывать на доступ к исходному коду или файлам данных в качестве файлов обычной операционной системы. Таким образом, setuptools может установить ваш проект в виде zipfile или каталога, а его выбор по умолчанию определяется флагом проекта zip_safe (ссылка).

С практической точки зрения, какова эффективность производительности? Стоит ли исследовать, являются ли мои проекты безопасными для zip файлов, или же минимальные преимущества?

4b9b3361

Ответ 1

Zip файлы занимают меньше места на диске, что также означает, что они быстрее читаются с диска. Поскольку большинство операций связано с привязкой ввода-вывода, накладные расходы при распаковке упаковки могут быть меньше, чем накладные расходы при чтении большего файла с диска. Более того, вероятно, что один, маленький-zh-zip файл хранится последовательно на диске, а коллекция меньших файлов может быть более распространена. В ротационных средах это также повышает производительность чтения, сокращая количество запросов. Таким образом, вы обычно оптимизируете использование вашего диска за счет некоторого времени процессора, что может значительно улучшить время import и время загрузки.

Ответ 2

В дополнение к уже упомянутым уже есть несколько преимуществ.

Чтение одного большого файла .egg(и разархивирование) может быть значительно быстрее, чем загрузка нескольких (возможно, много) меньших .py файлов в зависимости от носителя/файловой системы, на которой он находится.

Некоторые файловые системы имеют большой размер блока (например, 1 МБ), что означает, что обработка небольших файлов может быть дорогостоящей. Несмотря на то, что ваши файлы небольшие (скажем, 10 КБ), вы можете загружать 1 МБ блок с диска при чтении. Как правило, файловые системы объединяют несколько небольших файлов в большом блоке, чтобы немного уменьшить это.

В файловых системах, где доступ к метаданным файлов медленный (что иногда происходит с общими файловыми системами, например NFS), доступ к большому количеству файлов может быть очень дорогим.

Разумеется, также помогает скрепление всей связкой, так как это означает, что в общем случае нужно будет читать меньше данных.

Короче говоря: это может иметь большое значение, если ваша файловая система больше подходит для небольшого количества больших файлов.