我可以清楚吗?使用python复制/操作适合文件时的内存?

时间:2015-02-13 17:28:04

标签: python memory clear shutil

我正在处理大约300 x 200MB的文件,并尝试编写一个代码,根据文件名将它们复制到新目录中。下面是我的代码示例。我已经将我的文件名写入了blockarray中的列表(块)。然后我遍历每个块并使用shutil复制适配文件。

当我运行代码时,我的电脑一直在减慢然后冻结。我已经环顾四周并找到了gc.collect(),但这似乎没有帮助。复制每个文件后是否还要清除内存?

for block in blockarray:
    for i in range(1,len(block)):
        old_path = current_path + num + '/' + block[i]
        new_path = current_path + num + '_ex/' + block[0] + '/' + block[i]
        if not os.path.exists(new_path):
            shutil.copyfile(old_path, new_path)
            print "%s copied" %(block[i])

1 个答案:

答案 0 :(得分:0)

我不确定这会有所帮助,但您可以尝试一下:vmtouch

以下是其文档中的示例:

  

我们有3个大数据集,a.txt,b.txt和c.txt但只有2个   会立刻适应记忆。如果我们在内存中有a.txt和b.txt但是   现在想使用b.txt和c.txt,我们就可以开始了   加载c.txt然后我们的系统将从a.txt驱逐页面   (我们想要的)和b.txt(我们不想要)。

     

因此,让我们给系统一个提示并从内存中驱逐a.txt   c.txt的空间:

$ vmtouch -ve a.txt Evicting a.txt

       Files: 1
 Directories: 0    Evicted Pages: 42116 (164M)
     Elapsed: 0.076824 seconds

P.S。 Instagram recomended this tool,这就是我怎么知道的,但我自己还没有玩过它。