【发布时间】:2015-01-25 15:46:48
【问题描述】:
假设,例如,我有一个这样的类:
def class Foo(object):
def __init__(self,x):
self.x = x
def lookup(self):
return dict[x]
lookup 函数的目的是在字典中查找x 并返回值。假设这个字典非常大。我想知道是在类中声明dict,还是将dict声明为全局变量。
我担心内存效率:dict 将保持不变,我希望它不会占用过多的内存。因此,我在问类如何使用内存。如果我声明例如Foo 的 50,000 个实例,并且我在 Foo 中声明了字典,这是否意味着我正在生成 50,000 个 Foo 的副本?而如果我将 dict 称为全局变量,我不会产生任何额外的副本?
如何制作尽可能少的 dict 副本?理想情况下,这个程序只有一个。
【问题讨论】:
-
@Andreas 是的,内存中
Foo的两个实例是不同的——但是这些对象上的方法是否也不同?我不明白为什么每次都会复制相同的功能(lookup)。只维护一个指向lookup函数的指针是最有效的。
标签: python class memory memory-management dictionary