定期关闭并重新打开csv文件以减少内存负载

时间:2017-01-01 00:57:08

标签: python csv selenium

我正在编写一个脚本,用于使用selenium对.csv文件进行适度大量的刮擦。大约15,000行,每行10列。当我进行300行测试时,我注意到最后,它似乎比它开始时运行慢一点。这可能只是我的看法,或者可能与互联网速度有关。但我想到,在运行csv_file.close()之前,文件没有写入磁盘,我认为数据都保存在内存缓冲区或其他内容中?

那么定期关闭然后重新打开csv文件是有意义的吗(每一个都通过减少内存负载来帮助加速脚本?或者是否会产生一些更大的问题?或者整个想法是愚蠢的,因为我是想象脚本放慢了吗?300行扫描产生了一个大约39kb的csv文件,这看起来并不多,但我不知道python在内存中保存这种数据是否会减慢它的速度或者没有。

完整脚本的Pastebin,如果有任何不同,会进行一些混淆:http://pastebin.com/T3VN1nHC *请注意脚本没有完全完成。我正在努力使它最终用户友好,所以此时运行时仍有一些松散的结束。

1 个答案:

答案 0 :(得分:0)

我经常使用Java和C#,并且在编写大型CSV文件时没有性能问题。写入CSV或SQL或任何可以忽略不计的内容与实际抓取/导航页面/网站相比。我建议你做一些额外的记录,这样你就可以看到刮页之间的时间和编写CSV的时间,并重新运行你的300刮擦测试。

如果您真的想要更快,请将输入文件分成两部分并触发脚本两次。现在你以两倍的速度奔跑......所以~9小时。这将是你最大的推动力。您可以多次触发它并轻松地在同一台机器上运行4+。我已经完成了很多次(不需要网格)。

我能想到的唯一另一件事就是查看你的抓取方法效率低下,但至少运行两个并发脚本会打破所有其他改进/效率。