首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >numpy的内存分析器

numpy的内存分析器
EN

Stack Overflow用户
提问于 2011-05-16 22:37:24
回答 1查看 2.2K关注 0票数 20

根据top的说法,我有一个numpy脚本,它使用了大约5 5GB的内存:

代码语言:javascript
复制
  PID USER   PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16994 aix    25   0 5813m 5.2g 5.1g S  0.0 22.1  52:19.66 ipython

有没有内存分析器可以让我对占用大部分内存的对象有一些了解?

我试过heapy,但guppy.hpy().heap()给了我这个:

代码语言:javascript
复制
Partition of a set of 90956 objects. Total size = 12511160 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0  42464  47  4853112  39   4853112  39 str
     1  22147  24  1928768  15   6781880  54 tuple
     2    287   0  1093352   9   7875232  63 dict of module
     3   5734   6   733952   6   8609184  69 types.CodeType
     4    498   1   713904   6   9323088  75 dict (no owner)
     5   5431   6   651720   5   9974808  80 function
     6    489   1   512856   4  10487664  84 dict of type
     7    489   1   437704   3  10925368  87 type
     8    261   0   281208   2  11206576  90 dict of class
     9   1629   2   130320   1  11336896  91 __builtin__.wrapper_descriptor
<285 more rows. Type e.g. '_.more' to view.>

由于某些原因,它只占5 5GB内存中的12MB (大部分内存几乎肯定是由numpy数组使用的)。

关于我在heapy上可能做错了什么,或者我应该尝试其他什么工具(除了this thread中已经提到的那些工具),有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-16 22:45:27

Numpy (和它的库绑定,马上会有更多)使用allocate来分配空间,这就是为什么大numpy分配所使用的内存不会出现在像heapy这样的分析中,也不会被垃圾收集器清理。

大泄漏的常见疑点实际上是scipy或numpy库绑定,而不是python代码本身。去年,我被umfpack的默认scipy.linalg接口弄得焦头烂额,它以每次10Mb的速度泄漏内存。您可能希望尝试使用valgrind之类的命令来分析代码。它通常可以提供一些提示,说明在哪里可以查看可能存在泄漏的地方。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6018986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档