在csv.writer中释放内存

时间:2017-07-10 11:44:07

标签: python python-3.x csv memory

我有一个带有循环的python脚本:

  • 打开网址
  • 获取信息
  • 将该信息存储在CSV文件中

问题是循环有一百万次迭代,一段时间后我的内存耗尽。我一直在分析脚本,问题是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%。唯一不同的是代码行。

提前致谢!

0 个答案:

没有答案