笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

调试内存泄漏

发布者: 笨鸟自学网



蜘蛛太多了?

如果项目并行执行的spider太多,则 prefs() 很难阅读。因此,该函数具有 ignore 参数,该参数可用于忽略特定类(及其所有子类)。例如,这不会显示对spider的任何实时引用:

>>> from scrapy.spiders import Spider
>>> prefs(ignore=Spider)

scrapy.utils.trackRef模块

以下是 trackref 模块。

classscrapy.utils.trackref.object_ref[源代码]

如果要使用跟踪活动实例,则从该类继承 trackref 模块。

scrapy.utils.trackref.print_live_refs(class_nameignore=NoneType)[源代码]

打印实时引用的报告,按类名分组。

参数

ignore (type or tuple) -- 如果给定,则将忽略指定类(或类的元组)中的所有对象。

scrapy.utils.trackref.get_oldest(class_name)[源代码]

返回具有给定类名的最旧活动对象,或者 None 如果没有找到。使用 print_live_refs() 首先获取每个类名的所有跟踪活动对象的列表。

scrapy.utils.trackref.iter_all(class_name)[源代码]

返回具有给定类名的所有活动对象的迭代器,或者 None 如果没有找到。使用 print_live_refs() 首先获取每个类名的所有跟踪活动对象的列表。

用muppy调试内存泄漏

trackref 提供了一种非常方便的机制来跟踪内存泄漏,但它只跟踪更可能导致内存泄漏的对象。然而,在其他情况下,内存泄漏可能来自其他(或多或少模糊)对象。如果这是你的案子,而且你用 trackref ,你还有另一个资源:muppy类库。

你可以从 Pympler .

如果你使用 pip ,可以使用以下命令安装muppy::

pip install Pympler

下面是一个使用muppy查看堆中可用的所有Python对象的示例:

>>> from pympler import muppy
>>> all_objects = muppy.get_objects()
>>> len(all_objects)
28667
>>> from pympler import summary
>>> suml = summary.summarize(all_objects)
>>> summary.print_(suml)
                               types |   # objects |   total size
==================================== | =========== | ============
                         <class 'str |        9822 |      1.10 MB
                        <class 'dict |        1658 |    856.62 KB
                        <class 'type |         436 |    443.60 KB
                        <class 'code |        2974 |    419.56 KB
          <class '_io.BufferedWriter |           2 |    256.34 KB
                         <class 'set |         420 |    159.88 KB
          <class '_io.BufferedReader |           1 |    128.17 KB
          <class 'wrapper_descriptor |        1130 |     88.28 KB
                       <class 'tuple |        1304 |     86.57 KB
                     <class 'weakref |        1013 |     79.14 KB
  <class 'builtin_function_or_method |         958 |     67.36 KB
           <class 'method_descriptor |         865 |     60.82 KB
                 <class 'abc.ABCMeta |          62 |     59.96 KB
                        <class 'list |         446 |     58.52 KB
                         <class 'int |        1425 |     43.20 KB

有关Muppy的更多信息,请参阅 muppy documentation .


Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-12-4 15:47 , Processed in 0.014226 second(s), 17 queries .

© 2001-2020

返回顶部