主題: __slots__
範例:
不使用__slots__優化記憶體(內部為一個hash table)
#!/usr/bin/python from pympler import asizeof class A(object): #__slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): self.year = year self.month = month self.day = day a = A(1,2,3) print asizeof.asized(a, detail=1).format()
<__main__ data-blogger-escaped-.a="" data-blogger-escaped-0x7f15e50e9cd0="" data-blogger-escaped-at="" data-blogger-escaped-object=""> size=552 flat=64 __dict__ size=488 flat=280 __class__ size=0 flat=0使用__slots__優化記憶體(不存table, 分開以更節省記憶體的方式存)
#!/usr/bin/python from pympler import asizeof class A(object): __slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): self.year = year self.month = month self.day = day a = A(1,2,3) print asizeof.asized(a, detail=1).format()
<__main__ data-blogger-escaped-.a="" data-blogger-escaped-0x191f6c8="" data-blogger-escaped-at="" data-blogger-escaped-object=""> size=224 flat=72 __slots__ size=80 flat=80 month size=24 flat=24 day size=24 flat=24 year size=24 flat=24 __class__ size=0 flat=0
結論:
使用__slots__優化記憶體 552->224缺點就是因為內部不存hash table, 所以你也只能使用__slots__指定的那些屬性名稱
沒有留言:
張貼留言