我有一个示例程序,它打开一个文件并将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从物理磁盘中删除文件,内存将返回到操作系统。 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()
有没有办法更好地处理这种情况?
答案 0 :(得分:0)
我找到了!这基本上不是python的问题。正如@Brad所说的那样是缓存问题。我遵循了本页中提到的内容,内存又回到了操作系统。
http://www.yourownlinux.com/2013/10/how-to-free-up-release-unused-cached-memory-in-linux.html