删除内存中

时间:2017-02-06 19:50:03

标签: python python-3.x memory-management

我正在寻找一种简单的方法来自动删除重复的不可变类型以节省内存(通过引用使用相同的对象)。

例如:code 1code 2执行相同的工作,但code 1使用大约200 Mb,而code 2只执行大约6 Mb。

有什么解决方案吗?内存管理员还是别的什么?

代码1(约200 Mb):

a = []
for _ in range(100000):
    a.append('my immutable data' * 100)

代码2(约6 Mb):

a = []
my_string = 'my immutable data' * 100
for _ in range(100000):
    a.append(my_string)

我可以使用sys.intern()作为字符串。但我也对其他不可变类型感兴趣,如tuple

解决方案之一:

class InternElements:
    def __init__(self):
        self.__elements_dict = {}

    def intern(self, element: Any):
        try:
            return self.__elements_dict[element]
        except KeyError:
            self.__elements_dict[element] = element
            return element

    def extend(self, elements: Iterable[Any]):
        for element in elements:
            self.intern(element)

0 个答案:

没有答案