首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已知Python的gzip.writer是慢的吗?

已知Python的gzip.writer是慢的吗?
EN

Stack Overflow用户
提问于 2020-04-07 23:42:26
回答 1查看 1.4K关注 0票数 1

我为我的雇主写了一个处理CSV文件的脚本。处理是CPU绑定的,文件很大.例如,输入的3+ GB产生6+ GB的输出。

在我的机器上,这个文本文件的转换几乎需要16分钟(这本身就有点长,但我使用的是股票csv-module),其中大约30秒是由操作系统(编写输出)花费的。

对于kick,我添加了一个透明压缩功能:

代码语言:javascript
复制
if name.endswith('.gz'):
    import gzip
    return gzip.GzipFile(name, mode, 9, fd)
return fd

当使用压缩时,运行时跳到超过一个小时--尽管sys时减半,因为需要编写的时间要少得多。

跳转是可以理解的,但是它的规模不是--如果我只是在未压缩的输出文件上运行gzip -9,它只需要13分钟。

我可以理解,gzip可能会通过使用更大的缓冲区等来赢得一些东西--但是在我的脚本中嵌入压缩应该能够从更少的数据复制中受益。然而,它失去了比2:1: 16分钟的转换时间+ 13分钟的压缩时间和61分钟的时间来完成这两项任务。

为何会有这么大的差距呢?众所周知,Python-2.x中的zlib/gzip代码很慢吗?如果Python-3在这方面做得更好--在未压缩的处理中更糟糕.

EN

回答 1

Stack Overflow用户

发布于 2021-02-19 10:56:03

我的一位同事注意到Python的gzip和bash的gzip之间的默认压缩级别是不同的。

默认情况下,Python实现使用9(最慢)的压缩级别。

gzip.open(filename, mode='rb', compresslevel=9, encoding=None, errors=None, newline=None)

默认情况下,bash gzip命令使用6级:

默认的压缩级别是-6 (也就是说,倾向于以牺牲速度为代价的高压缩)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61091153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档