zoukankan      html  css  js  c++  java
  • Python中使用自定义类class作为海量数据结构时内存占用巨大的问题

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

    无奈毕竟接触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
  • 相关阅读:
    FreeMarker配置详解
    tab显示不同数据
    EL表达式可以直接放在url的“ ”里面
    js的搜索框
    js实现tab页面不同内容切换显示
    如何让html中的td文字只显示部分
    MobileNets: Open-Source Models for Efficient On-Device Vision
    LFW Face Database下载
    python遍历文件夹
    把cifar数据转换为图片
  • 原文地址:https://www.cnblogs.com/jinzhao/p/6016323.html
Copyright © 2011-2022 走看看