写入大量文件后,内存不断增长



我有一个如下所示的示例程序,该程序打开一个文件并将100kb的字符串写入文件并关闭文件。

for a in xrange(100000):
    file_to = open('.//OutputFiles/Data' + str(a) + '.xml', "w")
    file_to.write(100kb_String)
    file_to.close()

此代码的问题是,内存不断增长,不会向操作系统释放内存。在上述代码运行后,如果我使用 rm 从物理磁盘中删除文件,内存将返回到操作系统。 gc.collect() 不起作用。我尝试了下面的子流程,但仍然没有运气。

def worker(a):
    file_to = open('.//OutputFiles/Data' + str(a) + '.xml', "w")
    file_to.write(100kb_string)
    file_to.close()
if __name__ == '__main__':
    jobs = []
    for i in range(100000):
        p = multiprocessing.Process(target=worker, args=(i,))
        jobs.append(p)
        p.start()
        p.join()

有没有办法更好地处理这种情况?

我找到了!这基本上不是python的问题。正如@Brad所说,这是缓存问题。我按照此页面中提到的内容进行操作,内存已恢复到操作系统。

http://www.yourownlinux.com/2013/10/how-to-free-up-release-unused-cached-memory-in-linux.html

最新更新