我正在编写一个python程序,当我测试它时,在前20分钟,它工作正常,然后突然内存消耗从1G增加到6G以上,然后它没有错误地结束。我猜它可能会被内核杀死,因为内存和SWAP都已满。 这是我的问题,1。我怎么知道为什么退出? 无论如何,我知道它为什么会突然消耗这么多记忆? 代码超过800行,我不知道哪个部分可以简化,所以我没有在这里粘贴它。 基本上,程序只是一个大循环,对不同的数据做同样的事情。
我不知道VIRT突然变得如此之高的原因,但在此之前,还有一些奇怪的现象,因为整个程序使用30个线程与代理爬行一些网站,正常的流量是大约1MB / s,但在这之前的流量大约是10MB / s,甚至20MB / s(速度是可能的,因为我在VPS上测试),但是当发生这种情况时的流量几乎为0.我不知道'知道如何将流量和内存问题联系在一起。
答案 0 :(得分:2)
您可以从Python line profiler开始,它用于查看脚本中每行代码运行的速度和频率。
pip install line_profiler
一旦你计时,你就可以开始分析记忆
pip install -U memory_profiler
pip install psutil
查找“内存泄漏”的最快方法是使用一个名为objgraph的强大工具。此工具允许您查看内存中的对象数,还可以找到代码中包含对这些对象的引用的所有不同位置。 / p>
pip install objgraph