Python程序中的内存泄漏任务管理器中的内存非常高,内存打印输出是正常的

2024-04-20 13:10:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到,当我打开任务管理器并监视我的程序内存使用情况时,它会在30分钟内线性增加到5GB以上。我希望使用量会随着时间的推移而增加,但这太疯狂了

我不会发布我的代码,因为它非常长,跨越10个不同的py文件

如果我必须猜测问题出在哪里,我会假设它与Pytesseract OCR或Selenium有关。我每秒拍摄一次屏幕截图,这是我能想到的唯一可以使用这么多内存的东西。但是在函数调用结束时,保存图像的变量应该超出范围。我认为如果它将chrome实例存储在Python程序中,也可能是selenium

我使用了一个名为“muppy”的库来打印不同类型的内存使用情况,结果与任务管理器中的结果不匹配

这是我用来打印内存使用情况的代码

if __name__ == '__main__':
    ...
    # this code runs every 30 seconds
    all_objects = muppy.get_objects()
    sum = summary.summarize(all_objects)
    summary.print_(sum)

当task manager显示5gb的ram使用量时,muppy显示:

                                types |   # objects |   total size
===================================== | =========== | ============
                         <class 'list |      357807 |    157.64 MB
                         <class 'dict |      291873 |     54.72 MB
                          <class 'str |      469144 |     33.66 MB
  <class 'bs4.element.NavigableString |      109679 |     11.52 MB
              <class 'bs4.element.Tag |       95831 |      5.12 MB
                         <class 'type |        2410 |      2.45 MB
                         <class 'code |       15267 |      2.15 MB
                          <class 'int |       41775 |      1.13 MB
                        <class 'tuple |        9362 |    611.35 KB
                          <class 'set |         693 |    528.59 KB
          <class 'bs4.element.Comment |        3588 |    421.11 KB
                      <class 'weakref |        3262 |    254.84 KB
                    <class 'frozenset |         920 |    252.50 KB
            <class 'collections.deque |         304 |    187.62 KB
                   <class 're.Pattern |         350 |    174.91 KB

我是不是打错电话了

调试这些东西的最佳方法是什么?我甚至不知道python中会出现内存泄漏


Tags: 内存代码程序管理器objectskb情况code