【问题标题】:How to add large quantities of files to zip in a memory efficient way?如何以内存有效的方式将大量文件添加到 zip 中?
【发布时间】:2014-04-21 14:35:22
【问题描述】:

我对优化程序以提高内存效率有点陌生,所以这似乎有点初级:如果我打算将数百个文件(可能 100mb+)添加到一个 zip 中,哪种方法可以更好地保持系统资源可用? (以及捕捉)

下面的 zip_queue 变量是一个全局文件列表。

我目前的方法:

with zipfile.ZipFile(zip_name, "a", compression=zipfile.ZIP_DEFLATED) as myzip:
    for file in zip_queue:
        myzip.write(file) 

或者这样:

for file in zip_queue:
    with zipfile.ZipFile(zip_name, "a", compression=zipfile.ZIP_DEFLATED) as myzip:
        myzip.write(file)

我猜后者会在每次附加文件时刷新内存,但每次打开和关闭 zip 会比简单地保持文件打开产生更大的内存成本吗?

谢谢!

【问题讨论】:

  • 内存分析器说明哪些代码消耗的内存较少以及您的数据消耗了多少?

标签: python performance memory python-3.x zipfile


【解决方案1】:

我会采用第一种方式,只是为了避免反复关闭和​​重新打开同一个输出文件。我怀疑每种方法究竟使用了多少内存的细节很重要,如果这些细节真的很重要,你需要用 Python 以外的东西编写代码。

作为一般规则,文件访问比内存慢,所以我根本不担心内存使用,除非你有一个可以证明的实际问题。

【讨论】:

  • 谢谢约翰!我提出这个问题是因为我编写的脚本替换了旧的 Perl 脚本,该脚本在处理大量文件时确实容易崩溃。
猜你喜欢
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多