回答
所以我做了一個隨機ISH大壓縮文件:
$ ls -l *zip
-rw-r--r-- 1 aleax 5000 115749854 Nov 18 19:16 large.zip
$ unzip -l large.zip | wc
23396 93633 2254735
即116 MB與它23.4K的文件,並定時事情:
$ time unzip -d /tmp large.zip >/dev/null
real 0m14.702s
user 0m2.586s
sys 0m5.408s
這是系統提供的命令行解壓縮二進制文件 - 毫無疑問,它可以像純C的可執行文件一樣進行精細調整和優化。然後,(清理/ tmp目錄後; - )...:
$ time py26 -c'from zipfile import ZipFile; z=ZipFile("large.zip"); z.extractall("/tmp")'
real 0m13.274s
user 0m5.059s
sys 0m5.166s
...這是用Python標準庫 - 多一點苛刻的CPU時間,但超過10%的速度實,即是,已經過去的時間。
歡迎您重複這樣的測量(在您的特定平臺上 - 如果CPU很差,例如一個慢速ARM芯片,那麼Python對CPU時間的額外要求可能最終導致速度變慢)特定的zip文件,因爲每個大的zip文件會有非常不同的組合,很可能是性能)。但是這對我而言意味着沒有太多的空間來構建Python擴展,比舊版本zipfile
快得多 - 因爲使用它的Python擊敗純C,包含系統的解壓縮!)
感謝您的分析,這是最有幫助的。 – Duck 2009-11-19 05:12:46
@Duck,不客氣! – 2009-11-19 05:36:40
也很高興看到內存使用量測量。無論如何。 – 2009-11-19 09:56:15
For處理大文件而不加載到內存中,請在Python 2.6的zipfile
版本中使用新的基於流的方法,如ZipFile.open
。 不要使用extract
或extractall
除非你有強烈的消毒ZIP中的文件名。
(你曾經有read
所有字節到內存中,或在其周圍砍像zipstream;這是現在已經過時)
- 1. 什麼是最好的方式來處理多個文件
- 2. LLVM的最大好處是什麼?
- 3. 什麼是.NET的最好的文字處理組件
- 4. 什麼是一個好的PHP庫來處理文件上傳?
- 5. 什麼是最好的方式來處理DBNull的
- 6. 什麼是最好的Python庫模塊框架代碼?
- 7. 最好的做法來處理大plists?
- 8. 什麼是最好的方式來處理異步請求
- 9. 什麼是最好的python模塊來查找緯度和經度?
- 10. 什麼是最好的C++替代python字典和zip?
- 11. Ruby的等價於Python的多處理模塊是什麼?
- 12. 處理彼此使用模塊的最佳方式是什麼?
- 13. 最好的方式來處理改變python類的'模式'
- 14. zip文件模塊錯誤:文件不是一個zip文件
- 15. 使用try-finally模塊處理輸入流有什麼好處?
- 16. 爲什麼Python中的文件處理需要更多的時間來處理文件後面的塊?
- 17. zip文件Python模塊bytesize差異
- 18. Javascript模塊模式的好處是什麼?
- 19. Python:處理模塊
- 20. 是否有最大的JavaScript文件大小,瀏覽器可以處理什麼?
- 21. 塊選擇模式有什麼好處?
- 22. 在線程模塊中使用python中的Eventlet模塊有什麼好處?
- 23. 循環並處理大型(10GB +)文本文件的最佳方法是什麼?
- 24. 什麼是最好的facebook python-sdk fork?
- 25. 什麼是處理symfony2中編輯css文件的好方法
- 26. 什麼是最好的方法來生成xml文件
- 27. 什麼是最好的方法來存儲PDF文件?
- 28. 什麼是最好的(快)的方式來開發遊戲框架2.0模塊
- 29. Python - 文件管理和處理多個zip文件
- 30. 什麼是最好的Python編輯器?
你比較zip文件到使用拉鍊的性能/直接在解壓貝殼? – 2009-11-19 00:57:53