【发布时间】:2026-01-22 18:45:02
【问题描述】:
谁能解释一下下面的谜团?
我创建了一个大小约为 37[MB] 的二进制文件。在 Ubuntu 中压缩它——使用终端——花费不到 1[秒]。然后我尝试了 python:以编程方式压缩它(使用 zipfile 模块)也花了大约 1[sec]。
然后我尝试解压缩我创建的 zip 文件。在 Ubuntu 中——使用终端——这花费了不到 1[秒]。
在 python 中,解压缩代码(使用 zipfile 模块)运行时间接近 37[秒]!任何想法为什么?
【问题讨论】:
-
你能把你压缩文件的部分贴出来吗?这样,我们可以做出更准确的 cmets。
-
我猜 python zip/unzip 代码被解释而不是调用某些(编译的 C)库。
-
@TomMD:实际上不是,因为它依赖于 zlib,至少在文件实际被压缩时是这样。实际的解压缩是在本机代码中完成的。比较未压缩 zip 文件时的解压缩时间可能是值得的,以查看效果是否来自解释。
-
也许您没有有效地处理解压缩数据流。由于内存分配和交换,在内存中加载 37 MB 大小的字符串肯定需要很长时间。您应该将输出直接发送到文件。你是如何使用
zipfile模块解压压缩文件的? -
@scoffey:我很难相信内存分配/交换会花费那么的时间。 37 MB 什么都不是,即使在 Python 中也是如此。
标签: python linux ubuntu zip unzip