python程序随着时间的推移而变慢 - feedparser

时间:2016-02-23 13:15:14

标签: python feedparser python-performance

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

我观察到它开始于每分钟20-30次进料并逐渐减慢。几个小时后,它每小时降至4-5次。如果我终止该程序并从它离开的地方重新启动,则吞吐量再次为每分钟20-30次。

当然不是mySQL正在放慢速度。

您能否提出该计划的一些潜在问题?

由于

1 个答案:

答案 0 :(得分:0)

问题很可能与记忆有关。您可能正在将内容保存在内存中或以某种方式累积未收集垃圾的内存。诊断:

  1. 查看任务的大小(任务管理器是否为windows,如果是unix / Linux则为top),并随着源的增长进行监控。
  2. 然后您可以使用内存分析器来确定消耗内存的确切内容
  3. 一旦您发现可以采用不同的编码方式
  4. 一些提示:

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

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

      1. https://pypi.python.org/pypi/memory_profiler 这个非常好,装饰者很有帮助
      2. https://stackoverflow.com/a/110826/559095