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

Memory keeps on growing after writing large number of files

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

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

此代码的问题是,内存不断增长并且不会释放内存到 OS。在上面的代码有 运行 之后,如果我使用 rm 从物理磁盘中删除文件,内存将回到 OS。 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 所说,这是缓存问题。我按照这个页面中提到的内容进行操作,内存又回到了OS。

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