使用几个Gb的RAM时,Python程序无法完成

时间:2016-04-01 08:05:25

标签: python csv python-3.x

我正在处理一些包含很多行的.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()来释放已删除条目的空间(我使用字典并在使用时删除它们中的键)但在使用它之前发生了相同的事情。

提前致谢

0 个答案:

没有答案