rememberme是一个在python中处理内存问题的方便工具。

rememberme的Python项目详细描述


记住我

Build Status

rememberme是一个在python中处理内存问题的方便工具。它计算 python对象。

rememberme是sys.getsizeof

sys.getsizeof在python中几乎令人困惑:

importsysa=[1,2,3]b=[a,a,a]print(sys.getsizeof(a)==sys.getsizeof(b))# Can you believe the result is `True`?

rememberme让您清楚地知道对象有多大。

fromremembermeimportmemorya=[1,2,3]b=[a,a,a]print(memory(a))# 172 bytes!print(memory(b))# 260 bytes!

安装

pip install rememberme

更多功能

查看当前帧中的内存使用情况:

fromremembermeimportmemorydeffoo():a=[1,2,3]b=[a,a,a]printmemory()foo()# 260 bytes. Note `a` is included in `b`.

查看顶级内存消费者:

fromremembermeimporttopdeffoo():a=[1,2,3]b=[a,a,a]mem_top=top()# with no args, check current frameprint(mem_top[0])# `b` and its memory usageprint(mem_top[1])# `a` and its memory usage

甚至漂亮的打印结果!

fromremembermeimportmem_printdeffoo():a=[1,2,3]b=[a,a,a]mem_print(b)foo()

输出:

                           ┌int (28.0B)
             ┌list (172.0B)┼int (28.0B)
             │             └int (28.0B)
             │             ┌int (28.0B)
list (260.0B)┼list (172.0B)┼int (28.0B)
             │             └int (28.0B)
             │             ┌int (28.0B)
             └list (172.0B)┼int (28.0B)
                           └int (28.0B)

已知问题和限制

  • 为了获得更好的性能(和更好的意义),全球dict以及模块, 不包括在任何对象的内存使用中。
  • 我们基本上依赖于^{} 遍历对象图。对于C扩展,在 各种情况。对于最常见的numpy.ndarray,一个特定的过程被定义为 正确探测内存使用情况,但不能保证其他C扩展的正确性, 它们内部可能有无法检测到的重大泄漏。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Apache Flink外部Jar   创建和强制转换对象数组时发生java错误   Java,添加数组   具有相同包结构和类的java JAR   java Jenkins未能构建Maven项目   java为什么一个forloop比另一个更快,尽管它们做的“一样”?   servlets在将“/”站点迁移到Java EE包时处理contextpath引用   无法解析java MavReplugin:2.21或其某个依赖项   泛型如何编写比较器来泛化Java中的两种类型的对象?   java Android Emulator未在netbeans上加载   多线程Java使用线程对数组中的数字求和:在同步块中使用新变量作为锁:差异   java如何在JSP/servlet中设置<input>标记的值?