Python中使用自定义类class做为海量数据结构时内存占用巨大的问题

最近碰处处理一个二十多兆的文件时内存蹭蹭的吃掉四百多兆,吓死宝宝了。python

无奈毕竟接触python时间有限,尚未完整的看过python的一些基础知识,我想一个合格的pythoner应该不会碰到这个问题。固然像我这样的操做党碰到的问题映像也更深一点。最郁闷的是网上讨论这个的颇有限,google的结果也是三天才找到相应的说明,我想这里很重要的一点是海量数据在存储和很低层的操做时并不会使用python,嵌入一个c片断便可。好吧这招我还不会,并且在用的库要改也是件痛苦的事,为了让项目尽早上线有个折中的方案顶上便可。在无尽的排查后发现,原来python这个东东为了让你们写的爽,在性能上事丢的不要不要的,通常的系统还看不出问题,一但不是它原声的一些对象问题就来了,原来python在实现不少功能时并不像c那样极致,而是丢失性能换来魔法般的灵活性,而这个恶魔就是字典,自定义类的属性它竟然使用字典来实现的。固然python设计时假设class的使用场景并无特定于像c的struct那么高效,好在留了一手,能够像以下添加__slots__来缩减class,使得其占用内存更紧凑接近于list,对了list比tuple要差一点,毕竟它功能更多一点,不过我以为与其省下list这点还不如换c更实在。添加__slots__后的代码以下:性能

class Date:
    __slots__ = ['year', 'month', 'day']
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day
相关文章
相关标签/搜索