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

标签 python performance memory python-3.x zip

我对内存效率优化程序有点陌生,所以这看起来有点简陋:如果我打算将数百个文件(可能超过 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 以外的其他语言编写代码。

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

关于python - 如何以内存高效的方式将大量文件添加到 zip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23199533/

相关文章:

python - 为什么 types.MethodType 提示参数太多?

python - Keras 神经网络错误 : Setting an Array Element with a Sequence

python - Python 中的深度优先搜索

performance - 为什么循环总是编译成 “do…while”样式(尾跳)?

C++ 删除对象作为引用

Android解除分配位图进入 "unknown"内存

python - 如何修复 'pygame.error: Couldn' t 打开 .png' 错误

java - 在Java中使用MappedByteBuffer读取文件的每一行

c++ - 为什么 Eigen 的 Cholesky 分解在 Linux 上比在 Windows 上快得多?

c++ - 哪个更快 : Stack allocation or Heap allocation