每个变量的内存使用量之和

问题描述 投票:0回答:1

我需要解决一个问题,但我绝对不知道如何解决。我有一个超过2个变量的程序。每个变量占用内存(字节),我需要计算该字节的总和(我认为唯一的方法是使用sys.getsizeof,ctypes.string_at和struct.unpack)。因此,例如

x1, y1, x2, y2 = map(int, input().split(" "))
if x1 > x2:
    resX = x1 - x2
    resY = y1 - y2
else:
    resX = x2 - x1
    resY = y2 - y1
k = int(resY/resX)
b = y1 - (k*x1)
if b > 0:
    print("y = {}x + {}".format(k, b))
else:
    print("y = {}x - {}".format(k, abs(b)))

有很多var。如果我尝试这样做,结果将是sys.getsizeof(x1) + sys.getsizeof(x2) + sys.getsizeof(x3) ... + sys.getsizeof(b)。但是我需要编写一个函数,该函数将计算每个var数量的和。首先,我不知道如何分隔变量(我曾考虑过创建字典并计算值的内存使用量,但是我真的不知道如何分隔变量)。你能给我个建议吗?此任务非常具体,我在Google中找不到解决此问题的任何方法。到处都是程序员,就像我上面显示的那样,积累了各种建议。因此,如果您能提出自己的想法,我将感到非常高兴。谢谢

python variables memory memory-management task
1个回答
0
投票

使用locals()获取当前范围内的变量:

import sys

... your program here ...

x = 1
y = 2

current_size = sum([sys.getsizeof(obj) for var, obj in list(locals().items()) if not var.startswith('__') and var not in ['sys',]])

print(current_size)

输出:

56
© www.soinside.com 2019 - 2024. All rights reserved.