在打包Python项目时,将zip_safe设置为True有什么好处?

2024-04-19 11:00:54 发布

您现在位置:Python中文网/ 问答频道 /正文

setuptools文档仅说明:

For maximum performance, Python packages are best installed as zip files. Not all packages, however, are capable of running in compressed form, because they may expect to be able to access either source code or data files as normal operating system files. So, setuptools can install your project as a zipfile or a directory, and its default choice is determined by the project's zip_safe flag (reference).

在实际应用中,所获得的性能效益是什么?如果我的项目是zip安全的,或者收益一般是最小的,是否值得调查?


Tags: installedorto文档projectforpackagesas
2条回答

除了前面提到的优点外,还有几个优点。

读取一个单个大的.egg文件(并解压缩它)可能比加载多个(可能很多)较小的.py文件快得多,这取决于它所在的存储介质/文件系统。

有些文件系统具有较大的块大小(例如1MB),这意味着处理小文件可能会很昂贵。即使你的文件很小(比如说,10KB),你读的时候可能会从磁盘上加载一个1MB的块。通常,文件系统会将多个小文件组合在一个大块中,以减轻这种情况。

在文件系统中,访问文件元数据的速度很慢(有时在共享文件系统(如NFS)中会发生这种情况),访问大量文件也可能非常昂贵。

当然,压缩整个数据包也有帮助,因为这意味着总共需要读取的数据更少。

长话短说:如果您的文件系统更适合于少量大型文件,那么这可能非常重要。

Zip文件占用的磁盘空间更少,这也意味着它们可以更快地从磁盘读取。由于大多数东西都是I/O绑定的,因此解压缩打包时的开销可能小于从磁盘读取较大文件时的开销。此外,很可能一个小的ish-zip文件按顺序存储在磁盘上,而一个小文件的集合可能更分散。在旋转介质上,这也通过减少寻道次数来提高读取性能。因此,您通常以一些CPU时间为代价优化磁盘使用,这可能会显著提高您的import和加载时间。

相关问题 更多 >