2013-04-08 16 views
33

的setuptools的文檔只規定:打包Python項目時,將zip_safe設置爲True有什麼好處?

爲了獲得最佳性能,Python包最好爲zip文件安裝。然而,並非所有軟件包都能以壓縮格式運行,因爲他們可能希望能夠以普通操作系統文件的形式訪問源代碼或數據文件。因此,setuptools可以將項目安裝爲zipfile或目錄,並且其默認選擇由項目的zip_safe標誌(reference)確定。

實際上,獲得的性能優勢是什麼?是否值得調查我的項目是否是zip安全的,還是通常最小的好處?

回答

13

Zip文件佔用磁盤空間更少,這也意味着它們可以更快地從磁盤讀取。由於大多數事情都是I/O綁定的,因此解壓縮打包時的開銷可能小於從磁盤讀取較大文件的開銷。此外,單個小型zip文件可能會順序存儲在磁盤上,而較小文件的集合可能會更加分散。在旋轉媒體上,這也通過減少搜索次數來提高讀取性能。因此,您通常會以某些CPU時間爲代價來優化磁盤使用情況,這可能會顯着提高您的加載時間和import

+0

請注意:如果您關心快速導入加載時間,最好再考慮一次。避免經常加載Python解釋器!示例:一個Python解釋器可以相互處理幾個Web請求。 – guettli 2015-05-27 12:43:58

+1

這個答案在最好情況下是不完整的,因爲它只提到了一個.gg文件可以導致更好性能的多種原因的一小部分。 – 2015-09-19 16:10:31

5

除了已經提到的那些之外,還有幾個優點。

讀取一個單個大.egg文件(和解壓它)可以比加載多個(潛在地大量的)較小.py文件,取決於存儲介質/文件系統在其上駐留顯著更快。

某些文件系統具有較大的塊大小(例如1MB),這意味着處理小文件可能很昂貴。即使你的文件很小(比如說10KB),你也可能在讀取它時從磁盤加載1MB的數據塊。通常情況下,文件系統將大塊中的多個小文件合併在一起以緩解這一點。

在對文件元數據訪問速度慢的文件系統上(有時發生在共享文件系統上,例如NFS),訪問大量文件也可能非常昂貴。

當然,壓縮整個羣體也是有幫助的,因爲這意味着總共需要讀取更少的數據。

長話短說:如果您的文件系統更適合少量的大文件,它可能會影響很多。

相關問題