推荐哪种Python内存分析器?

推荐哪种Python内存分析器?

我想知道Python应用程序的内存使用情况,特别是想知道哪些代码块/部分或对象占用了大部分内存。谷歌搜索显示商业搜索是Python内存校验器(仅限窗户)。

而开源的是化油器海皮.

我没有试过任何人,所以我想知道哪一个是最好的考虑:

  1. 给出了大部分细节。

  2. 我必须对我的代码做最少的或不做的更改。


慕容708150
浏览 600回答 3
3回答

宝慕林4294392

海皮使用起来很简单。在代码中的某个时候,您必须编写以下内容:from guppy import hpy h = hpy()print h.heap()这提供了如下一些输出:Partition of a set of 132527 objects. Total size = 8301532 bytes.Index  Count   %     Size   % Cumulative   % Kind (class / dict of class)0  35144  27  2140412  26   2140412  26 str1  38397  29  1309020  16    3449432  42 tuple2    530   0   739856   9   4189288  50 dict (no owner)您还可以从引用对象的位置找到数据,并获得相关的统计信息,但不知怎的,文档上的文档有点稀疏。还有一个用Tk编写的图形浏览器。

紫衣仙女

既然没人提过,我就指着我的模块记忆剖面仪它能够打印内存使用情况的逐行报告,并能在Unix和Windows上工作(需要在最后一次打印psutil)。输出不是很详细,但目标是概述代码在何处消耗更多的内存,而不是对分配的对象进行详尽的分析。在用@profile并使用-m memory_profiler标记它将打印如下逐行报告:Line #    Mem usage  Increment   Line Contents==============================================      3                           @profile      4      5.97 MB    0.00 MB   def my_func():      5     13.61 MB    7.64 MB       a = [1] * (10 ** 6)      6    166.20 MB  152.59 MB       b = [2] * (2 * 10 ** 7)      7     13.61 MB -152.59 MB       del b     8     13.61 MB    0.00 MB       return a

开心每一天1111

我建议唐瑟..它非常容易设置,并且您需要对代码进行零更改。您可以通过时间查看每种类型的对象的计数,查看活动对象的视图列表,查看对活动对象的引用,所有这些都来自简单的web接口。# memdebug.pyimport cherrypyimport dowserdef start(port):     cherrypy.tree.mount(dowser.Root())     cherrypy.config.update({         'environment': 'embedded',         'server.socket_port': port    })     cherrypy.server.quickstart()     cherrypy.engine.start(blocking=False)您导入membug,并调用mem调试器。就这样。我还没试过PySizer或者Heapy。我会感谢其他人的评论。更新以上代码用于CherryPy 2.X, CherryPy 3.X这个server.quickstart方法已被删除,并且engine.start不采取blocking旗子。所以如果你用CherryPy 3.X# memdebug.pyimport cherrypyimport dowserdef start(port):     cherrypy.tree.mount(dowser.Root())     cherrypy.config.update({         'environment': 'embedded',         'server.socket_port': port    })     cherrypy.engine.start()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python