Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 定期关闭并重新打开csv文件以减少内存负载_Python_Csv_Selenium - Fatal编程技术网

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

Python 定期关闭并重新打开csv文件以减少内存负载,python,csv,selenium,Python,Csv,Selenium,我正在使用selenium为一个.csv文件编写一个中等大小的scrape脚本。大约15000行,每行10列。当我运行一个300行的测试时,我注意到在接近结束时,它似乎比开始时运行得慢了一点。这可能只是我的看法,也可能与互联网速度有关。但我有一个想法,在运行csv\u file.close()之前,文件不会写入磁盘,我假设数据都保存在内存缓冲区或其他什么地方 因此,定期关闭然后重新打开csv文件是否有意义(通过减少内存负载来帮助加快脚本的速度?或者这会产生一些更大的问题?或者整个想法很愚蠢,因为

我正在使用selenium为一个.csv文件编写一个中等大小的scrape脚本。大约15000行,每行10列。当我运行一个300行的测试时,我注意到在接近结束时,它似乎比开始时运行得慢了一点。这可能只是我的看法,也可能与互联网速度有关。但我有一个想法,在运行
csv\u file.close()
之前,文件不会写入磁盘,我假设数据都保存在内存缓冲区或其他什么地方

因此,定期关闭然后重新打开csv文件是否有意义(通过减少内存负载来帮助加快脚本的速度?或者这会产生一些更大的问题?或者整个想法很愚蠢,因为我想象脚本会变慢?300行的刮擦产生了一个大约39kb的csv文件,看起来不多,但我只是不知道python是否将这种数据保留在内存中会不会让它慢下来

完整脚本的粘贴库,如果有任何区别,请进行一些模糊处理: *请注意,脚本还没有完全完成。我正在努力使其对最终用户友好,因此在这一点上运行时仍然有一些松散的结尾。

我经常使用Java和C#,并且编写大型CSV文件时没有性能问题。编写CSV或SQL或其他内容与实际抓取/浏览页面/站点相比可以忽略不计。我将ld建议您做一些额外的日志记录,这样您就可以看到刮取页面之间的时间,以及写入CSV和重新运行300刮取测试的时间

如果你真的想加快速度,请将输入文件分成两部分,并触发脚本两次。现在你的运行速度是原来的两倍……因此~9小时。这将是你最大的提升。你可以再触发几次,然后在同一台机器上轻松运行4+。我已经做了很多次了(不需要网格)


我唯一能想到的另一件事是查看您的刮片方法是否效率低下,但运行至少两个并发脚本将破坏所有其他改进/效率组合。

为什么不使用数据库?即使是SQLite也比CSV文件好。这些信息最多可能用于生成g邮件地址标签。我以前从未使用过SQL。有什么真正的好处吗?csv看起来很简单/容易,我认为这会转化为更快的运行时间。考虑到我必须清理网站,我正在寻找一个18小时的清理桶。简单的实现并不一定意味着更快。如果你例如。在刮取过程中部分崩溃?下一步如何处理数据并不重要。说得好。我关心的是“在刮取过程中崩溃”的问题。我以前从未使用过SQLite或任何其他SQL风格。我正在阅读一些资料,但你有什么推荐的资源吗?生产出最终用户的产品有多容易可消化的,如xls或csv?将缓慢的速度模糊地归咎于csv编写似乎有点为时过早。您如何估计需要18个小时来进行刮写?也许您可以修补csv编写,即刮写数据,但不编写csv;这需要多长时间?您打算做什么进一步的性能测试?注意:300是一个非常小的数字(1/50)您的15K输入样本,可能不是一个非常随机的样本。不确定您是否对selenium过于熟悉,但这会导致用于2个并发脚本的chromedriver.exe文件出现问题吗?不会。我说的是使用selenium。我一直这样使用它。您只需为每个脚本拆分输入文件或设置up一些逻辑和使用SQL等。非常好,非常感谢你的建议,我真的不会想到。森林换树有点情况。我正在抓取的搜索表单没有“跳转到…页面”链接,只有下一页/上一页,所以我必须在当前页面时用
编写。没有问题。很高兴提供帮助。对于问题,w如果页面没有跳转到页面链接…请在单击页面链接后查看URL。其中可能有一个可用于跳过页面的页码,等等。不,我已经想到了。这是一个.aspx表单。URL永远不会更改。