我正在处理大约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])
答案 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,这就是我怎么知道的,但我自己还没有玩过它。