如何以内存高效的方式添加大量文件到zip?

时间:2014-04-21 14:35:22

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

我对优化内存效率程序有点新意,所以这看起来有点简陋:如果我打算在zip中添加数百个文件(可能是100mb +),哪种方法可以更好地保持系统资源的可用性? (并且为了捕捉)

下面的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都需要更多的内存成本而不是简单地保持文件打开?

谢谢!

1 个答案:

答案 0 :(得分:1)

我是第一种方式,只是为了避免一遍又一遍地关闭并重新打开相同的输出文件。我怀疑每个方法确切使用多少内存的细节,如果这些细节非常重要,那么你需要用Python之外的其他东西编写代码。

作为一般规则,文件访问速度比内存慢,所以除非你遇到可以证明的实际问题,否则我不会担心内存使用情况。

相关问题