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

Python中变量的内存大小

陈文景
2023-03-14
问题内容

我正在编写Python代码来进行一些大数计算,并且对计算中使用的内存有严重的担心。

因此,我想计算每个变量的每一位。

例如,我有一个变量 x ,它是一个大数字,并且想要计算表示 x 的位数。

以下代码显然是无用的:

x=2**1000
len(x)

因此,我转向使用以下代码:

x=2**1000
len(repr(x))

变量 x 为(十进制)为:

107150860718626732094842504906000181056140481170553360744375038837035105112493612249319837881569585812759467291755314682518714528569231404359845775746985985039039777482423098542107460506237114187795418215304647498398358126126739876755916554394607706291457695647654654

但是上面的代码返回 303

上面的long long序列的长度为302,因此我认为 303 应该仅与字符串长度有关。

所以,这是我最初的问题:

我怎么知道变量 x 的内存大小?

还有一件事; 如果我定义的话,使用C / C ++语言

int z=1;

这意味着为 z 分配了4个字节= 32位,并且这些位安排为00..001(31个0和一个1)。

在这里,我的变量 x 很大,我不知道它是否遵循相同的内存分配规则?


问题答案:

使用sys.getsizeof得到一个对象的大小,以字节为单位。

>>> from sys import getsizeof
>>> a = 42
>>> getsizeof(a)
12
>>> a = 2**1000
>>> getsizeof(a)
146
>>>

请注意,对象的大小和布局纯粹是特定于实现的。例如,CPython可能使用与IronPython完全不同的内部数据结构。因此,对象的大小可能因实现而异。



 类似资料:
  • 问题内容: 有谁知道如何获得变量(内存大小,,等),并打印出来?可能吗? 问题答案: 您可以为此使用unsafe.Sizeof函数。它返回以字节为单位的大小,该大小由您传递给它的值占据。这是一个工作示例: 请注意,某些平台明确禁止使用不安全,因为它是不安全的。这曾经包括AppEngine。不知道今天是否仍然如此,但我想是这样。 正如@Timur Fayzrakhmanov指出的那样,它将为您提供相

  • 问题内容: 我对和的内存成本感到好奇,因此我编写了一个程序来比较大小。我通过获得内存大小,但是显然这是错误的,因为当我更改大小时,输出是相同的。 问题答案: 并且仅返回传递值的大小,而无需递归遍历数据结构和添加指针值的大小。 slice是相对简单的结构:,并且由于我们知道它引用了后备数组,因此我们可以轻松地“手动”计算其大小,例如: 输出(在Go Playground上尝试): 地图是更复杂的数据

  • 本文向大家介绍python中查看变量内存地址的方法,包括了python中查看变量内存地址的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python中查看变量内存地址的方法。分享给大家供大家参考。具体实现方法如下: 这里可以使用id 希望本文所述对大家的Python程序设计有所帮助。

  • 我有一个关于java如何处理未使用变量的问题。 假设我有以下代码: 那么我就不会在代码中使用notUsedVariable。该变量是否会被存储,或者java是否足够聪明,可以在编译时忽略该变量? 谢谢

  • 问题内容: 我的磁盘上只有168MB的文件。这只是一个逗号分隔的单词,id的列表。该单词的长度可以为1-5个字符。有650万行。 我在python中创建了一个字典,将其加载到内存中,因此我可以针对该单词列表搜索传入的文本。当python将其加载到内存中时,它显示已使用的1.3 GB RAM空间。知道为什么吗? 假设我的word文件如下所示… 然后再加上650万。然后,我遍历该文件并创建一个字典(p

  • 1、变量的创建和赋值 在 Python 程序中,变量是用一个变量名表示,可以是任意数据类型,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头,比如: a=88 这里的 a 就是一个变量,代表一个整数,注意一点是 Python 是不用声明数据类型的。在 Python 中 = 是赋值语句,跟其他的编程语言也是一样的,因为 Python 定义变量时不需要声明数据类型,因此可以把任意的

  • Swift中的静态变量是如何存储的? > 如果我从未调用func usesticvar(),会发生什么?这些变量是否已初始化? 如果我调用useStaticVar()然后再也不访问它们,会发生什么?应收账

  • 问题内容: 我只是尝试了内存中python数据结构的大小。我写了以下代码片段: 我在以下配置上测试了代码: Windows 7 64位,Python3.1:输出为:所以lst1有52个字节,lst2有40个字节。 使用Python3.2的Ubuntu 11.4 32bit:输出为 Ubuntu 11.4 32位Python2.7: 谁能向我解释为什么两个大小都不同,尽管它们都是包含1的列表? 在g