我有一个python 3脚本,它基本上是API的数据抓取工具。
代码本身运行良好,速度惊人,但是随着时间的推移它会变慢。
我不知道如何找到它变慢的原因。
它是如何工作的简单概述:
在根据特定标准测试了所有数据之后(使用简单的If语句),然后将所有数据记录在CSV文件中。
每次弹出一个新的CSV文件包含100个以上的数据点后,最后一个弹出。
重复。
现在一切正常,直到脚本运行了大约24个小时。这样一来,每个循环的循环速度将约为32秒,并且随着时间的流逝,它将缓慢增加。
我的问题是-是什么原因造成的?我在哪里看可能导致这种情况的原因
如果我遗漏了一些极为重要的信息,请让我知道我需要提供哪些附加信息。
答案 0 :(得分:0)
通常情况下,如果有一些事情导致加班时间减慢,那么默认情况下,我会至少测试两个项目。
检查垃圾回收是否有帮助。如果对象不断保存,即same_name = new_object
,那么原始same_name
的内存将不会释放。除了减少可用内存之外,这还可能导致性能下降。简单运行import gc
然后偶尔运行gc.collect()
可能会有所帮助。
对象的大小继续增长。如果是这种情况,并且我不知道是否是因为我没有看过您的代码,那么使用pickle可以帮助存储对象块。达到指定的大小后,然后存储对象并重新开始。
要继续缩小范围,也许您可以在代码中添加计时器(尤其是在您最不希望出现问题的地方),然后将计时数据打印或写入日志文件。我只使用from time import time
,然后使用start_time = time()
,然后使用end_time = time()
来获得操作通过end_time - start_time
所花费的总秒数。此信息可以帮助您查看代码开始花费更长的时间。将这些数据存储在表中将有助于更容易地使用一些名称来使用,分析和标记时间数据,并帮助您准确地知道代码中信息的收集位置。
如果您恰好采取了此步骤,请将新信息添加到您的问题中,以帮助我们更好地为您提供帮助。