当前位置: 首页 > 面试题库 >

Python深getsizeof列表内容?

毛勇
2023-03-14
问题内容

令我惊讶的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分配新内存用于相同的字符串


问题答案:

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

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



 类似资料:
  • 本文向大家介绍深入了解python列表(LIST),包括了深入了解python列表(LIST)的使用技巧和注意事项,需要的朋友参考一下 Python 内置的四种常用数据结构:列表(list)、元组(tuple)、字典(dict)以及集合(set)。 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因为程序不仅需要使用单个变量来保存数据,还需要使用多种数据结构来保存大量数据,而

  • 问题内容: 我对列表副本有一些问题: 所以之后我得到了E0来自,我做的副本E0通过调用。我猜这里是的较深的副本E0,我通过。但是在主要功能上。 为什么循环之前的结果与for循环之后的结果不同? 下面是我的代码: 问题答案: 不是深层副本。你不使用做出深层副本两者并很浅拷贝)。 你用于深度复制列表。 请参阅以下代码段 现在看deepcopy操作

  • 问题内容: 我有以下二维位图: 出于好奇,我想检查一下,如果它将使用整数而不是布尔值,它将占用多少空间。所以我检查了当前大小并得到 104 之后,我修改了 但仍然有 104 然后我决定看看仅用字符串我就能得到多少: ,仍然显示 104 这看起来很奇怪,因为我期望字符串列表列表浪费大量的内存,而不仅仅是布尔值。 显然我缺少有关getsizeof如何计算大小的信息。谁能解释我为什么得到这样的结果。 P

  • 通过列表综合,可以从一个已有的列表导出一个新的列表。例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于2的数都是原来的2倍。对于这种应用,列表综合是最理想的方法。 使用列表综合 例15.1 使用列表综合 #!/usr/bin/python # Filename: list_comprehension.py listone = [2,3,4] listtwo = [2*iforiin

  • 我正在尝试从以下URL中获取一个列表:https://www.oncomap.de/centers?selectedOrgan=Darm 使用Chrome的开发工具,我发现我感兴趣的内容就在

  • 所以我有一个递归程序,我试图生成一个字符串的所有排列。我打算将排列存储在一个名为ans的列表中。 每个当前排列都存储在用于填充ans列表的容器列表中。我怀疑,因为列表是一种引用类型,所以我可能会因为容器列表被操纵而丢失ans列表中的值?我是白痴吗