Python os.walk内存问题

Joh*_*alt 6 python memory os.walk

我编写了一个扫描程序,用于查找扫描系统的所有硬盘驱动器上的某些文件.其中一些系统很老,运行带有256或512 MB RAM的Windows 2000,但文件系统结构很复杂,因为其中一些用作文件服务器.

我在我的脚本中使用os.walk()来解析所有目录和文件.

不幸的是我们注意到扫描仪经过一段时间的扫描后消耗了大量的RAM,我们发现os.walk功能在文件系统上行走2小时之后就会使用大约50 MB的RAM.此RAM使用量随着时间的推移而增加.扫描4小时后,我们有大约90 MB的RAM.

有没有办法避免这种行为?我们还尝试了"betterwalk.walk()"和"scandir.walk()".结果是一样的.我们是否必须编写自己的walk函数,从内存中删除已扫描的目录和文件对象,以便垃圾收集器可以不时删除它们?

随着时间的推移资源使用 - 第二行是内存

谢谢

小智 1

你尝试过 glob 模块吗?

import os, glob

def globit(srchDir):
    srchDir = os.path.join(srchDir, "*")
    for file in glob.glob(srchDir):
        print file
        globit(file)

if __name__ == '__main__':
    dir = r'C:\working'
    globit(dir)
Run Code Online (Sandbox Code Playgroud)