我有一个带有循环的python脚本:
问题是循环有一百万次迭代,一段时间后我的内存耗尽。我一直在分析脚本,问题是csv编写器永远不会释放内存。我一直在阅读,我的实现似乎是正确的,我甚至尝试用' del csv'手动释放内存。和' gc.collect()'甚至手动关闭文件没有任何改进。
这里有一小段代码:
for step in range(0, 1000000):
retrievedDict = getDictData(x)
with open('data.csv', 'a') as output_csv_file:
w = csv.writer(output_csv_file)
if (step == 0):
w.writerow(retrievedDict.keys())
w.writerow(retrievedDict.values())
output_csv_file.close() #I know this supposed to be useless.
个人资料:
73 32.922 MiB 0.000 MiB w = csv.writer(output_csv_file)
74 32.922 MiB 0.000 MiB if (step == 0):
75 26.883 MiB -6.039 MiB w.writerow(retrievedDict.keys())
76 32.922 MiB 6.039 MiB w.writerow(retrievedDict.values())
77 32.922 MiB 0.000 MiB output_csv_file.close()
该程序以0.5%的内存使用率开始,30分钟后它的内存使用率为3.5%。唯一不同的是代码行。
提前致谢!