Python 使用 feedparser 的程序随着时间的推移变慢

Python program using feedparser slows over time

我有一个 Python 程序,它在一个循环中 运行 并使用 feedparser 下载 20k RSS 提要并将提要数据插入 RDBMS。

我观察到它从每分钟 20-30 次喂食开始,然后逐渐减慢。几个小时后,它会下降到每小时 4-5 次。如果我终止程序并从它离开的地方重新启动,吞吐量再次是每分钟 20-30 个进给。

肯定不是 MySQL 正在放缓。

该程序可能存在哪些潜在问题?

问题很可能与内存有关。您可能将提要保存在内存中,或者以某种方式积累了未被垃圾收集的内存。诊断:

  1. 查看您的任务大小(如果 windows 则为任务管理器,如果 unix/Linux 则为最高)并在它随提要增长时对其进行监控。
  2. 然后您可以使用内存分析器来确定到底是什么在消耗内存
  3. 一旦您发现您可以编写不同的代码,也许

几点提示:

  1. 在将任何相关的未使用数据结构设置为空后执行显式垃圾收集调用 (gc.collect())
  2. 使用多处理方案,在其中生成多个进程,每个进程处理较少数量的提要
  3. 如果您使用的是 32 位系统,也许继续使用 64 位系统

关于内存分析器的一些建议:

  1. https://pypi.python.org/pypi/memory_profiler 这个很好,装饰器很有帮助