我想知道我的Python应用程序的内存使用情况,并且特别想知道哪些代码块/部分或对象占用了大部分内存.Google搜索显示商业广告是Python Memory Validator(仅限Windows).
我没有尝试任何人,所以我想知道哪一个是最好的考虑:
提供大部分细节.
我必须对代码进行最少或不做任何更改.
在Python 2中有一些工具,但一切似乎都是旧的和过时的.
我发现了PySizer和Heapy但是一切似乎都是面向Python2的,需要付出很多努力来移植.
objgraph很有趣,但仍然不是一个完全工作的分析器
使用哪种工具?
python profiling memory-profiling memory-leak-detector python-3.x
互联网上有一些自动记忆库可用于各种不同的语言; 但不知道它们的用途,使用方法以及它们的工作原理,很难看出它们的价值.使用memoization有什么令人信服的论据,以及memoization特别闪耀的问题域是什么?这里特别感谢不知情的信息.
sys.getsizeof( 10000*[x] )
无论x:0,"a",1000*"a",{},我感到惊讶的是40036.
有没有deep_getsizeof
正确考虑共享内存的元素?
(问题来自查看内存数据库表,如范围(1000000) - >省名:列表或字典?)
(Python是2.6.4的mac ppc.)
补充:10000*["密西西比"]是指向一个"密西西比"的10000个指针,正如几个人所指出的那样.试试这个:
nstates = [AlabamatoWyoming() for j in xrange(N)]
Run Code Online (Sandbox Code Playgroud)
其中AlabamatoWyoming() - >一个字符串"Alabama".."怀俄明州".什么是deep_getsizeof(nstates)?
(我们怎么说?
添加25jan:另请参阅when-does-python-allocate-new-memory-for-identical-strings
python ×3
performance ×2
profiling ×2
demo ×1
generics ×1
memoization ×1
memory ×1
python-3.x ×1