我有一个如下所示的示例程序,该程序打开一个文件并将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