我正在处理一些包含很多行的.csv文件,而我的程序结束时遇到了问题。
当我使用小csv(3 csv的1000行和1的5.700.000行)启动程序时,当我开始使用另一个大的csv时,我的程序使用大约1.5Gb的内存在大约21秒内完成它的魔力(2 csv为1000和5,7到5,900万行中的2个)这一切都变坏了。
程序读取所有行,将它们存储在内存中(可能这不是最好的方法),完成所有工作(同时使用4Gb和7Gb或RAM的峰值)然后完成所有操作(最后一条指令是写一个日志信息说它已经结束了)但程序没有结束执行,只是保持在那里没有完成,没有释放它正在使用的4Gb ram。
最后一行:
{{1}}
日志的最后几行:
2016-03-31 19:02:19,810 - main - 错误 - 在query3 csv
中找不到'3831414'2016-03-31 19:02:19,810 - main - 错误 - 在query3 csv
中找不到'3831778'2016-03-31 19:02:19,810 - main - 错误 - 在query3 csv
中找不到'3831416'2016-03-31 19:02:19,810 - main - INFO - 插入955行 inserdata.csv
2016-03-31 19:02:19,810 - main - 警告 - 45 发现文件错误
错误是一个受控制的异常,我以为如果循环的最后一次迭代有什么异常,那可能是问题所在,但在我上次测试时并不是问题所在。 正如你所看到的,昨天上午19:02结束了,但是今天上午8:44我在整个晚上“工作”后从cmd手动完成了python程序。
使用大量RAM会有问题吗? BTW我在一百行之后使用gc.collect()来释放已删除条目的空间(我使用字典并在使用时删除它们中的键)但在使用它之前发生了相同的事情。
提前致谢