小编典典

Python深getsizeof列表内容?

python

令我惊讶的sys.getsizeof( 10000*[x] ) 是,无论x:0,“ a”,1000 *“ a”,{} ,都是40036。
是否有一个deep_getsizeof 可以适当考虑共享内存的元素?
(问题来自查看内存数据库表,例如range(1000000)->省名:list或dict?)
(在Mac ppc上,Python是2.6.4。)

补充:10000 * [“” Mississippi“]是指向一个” Mississippi“的10000指针,正如一些人指出的那样。尝试这个:

nstates = [AlabamatoWyoming() for j in xrange(N)]

其中AlabamatoWyoming()->字符串“ Alabama” ..“ Wyoming”。什么是deep_getsizeof(nstates)?
(我们怎么知道?

  • 适当的deep_getsizeof:困难,〜gc跟踪器
  • 从总vm估算
  • python实现的内在知识
  • 猜测。

新增25jan:另请参阅何时将Python分配新内存用于相同的字符串


阅读 214

收藏
2020-12-20

共1个答案

小编典典

孔雀鱼/堆;
我自己并没有玩太多,但是我的一些同事已经将它用于内存分析,并取得了良好的效果。

文档可能会更好,但是此方法在解释基本概念方面做得不错。

2020-12-20