为什么os.listdir()导致过多的内存使用?

时间:2014-07-18 15:22:41

标签: python memory-leaks

我正在编写一个脚本来从存储在外部驱动器上的大量数据(~1TB)中收集统计数据。我注意到我只是内存不足,但是python.exe分配的内存只有大约11MB。当我弹出驱动器时,大约4GB的内存立即被释放。

在尝试追踪问题时,我能够重现在Windows 7,Windows 8和OSX 10.9上运行以下代码的问题,使用Windows 7上的USB2和Windows 8和OSX上的USB3,以及使用Python 2.7。 6和2.7.8:

    # listFile.txt is a list of all folders with relevant data, about 14,000 lines
    import os
    with open('listFile.txt', 'r') as listFile:
        for line in listFile.readlines():
            foo = len(os.listdir(line[:-1])) # line[:-2] for Mac testing

由于有数千个文件夹和数百万个文件,因此执行需要很长时间。在运行时,任务管理器/活动监视器报告的内存使用量每15分钟稳步攀升至1GB左右。报告的python.exe的内存使用量保持稳定。仅当驱动器弹出或拔出时,代码完成执行时才会释放此内存。任何想法为什么会这样?什么是写入内存,为什么在任何进程中都没有报告使用情况?

EDIT
看起来像tobias_k是对的。我能够在bash中使用ls -l重现内存使用情况。

0 个答案:

没有答案