我的Python程序有一个奇怪的性能问题:它运行得越久,就越慢。在开始时,它每分钟可以处理数十个工作单元。一小时后,每个工作单元需要花费数十分钟的时间。我的猜测是这是由于拥挤的垃圾收集器引起的。
问题在于我的脚本对内存需求过大,无法在大型运行中使用cProfile进行工作(参见:cProfile taking a lot of memory)。
我们编写了自己的性能插件,我们可以观察到我们系统的大多数部分,但似乎没有任何问题。唯一未解决的问题就是GC。
除了使用profile或cProfile之外,是否有其他方法可以查看有多少时间用于GC?
问题在于我的脚本对内存需求过大,无法在大型运行中使用cProfile进行工作(参见:cProfile taking a lot of memory)。
我们编写了自己的性能插件,我们可以观察到我们系统的大多数部分,但似乎没有任何问题。唯一未解决的问题就是GC。
除了使用profile或cProfile之外,是否有其他方法可以查看有多少时间用于GC?
gc.collect()
本身,然后计时返回时间,这样有帮助吗? - Thomas Kgc.DEBUG_STATS
,那么每次回收器运行时,它都会打印出一条消息,并显示每个调用的经过时间。 - NPE