我需要解决一个问题,但我绝对不知道如何解决。我有一个超过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中找不到解决此问题的任何方法。到处都是程序员,就像我上面显示的那样,积累了各种建议。因此,如果您能提出自己的想法,我将感到非常高兴。谢谢
使用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