博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中使用自定义类class作为海量数据结构时内存占用巨大的问题
阅读量:6607 次
发布时间:2019-06-24

本文共 777 字,大约阅读时间需要 2 分钟。

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

无奈毕竟接触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

转载于:https://www.cnblogs.com/jinzhao/p/6016323.html

你可能感兴趣的文章
Lucene的多域查询、结果中查询、查询结果分页、高亮查询结果和结果评分
查看>>
Method Draw – 很好用的 SVG 在线编辑器
查看>>
Leetcode: Search Insert Position
查看>>
LeetCode::Remove Duplicates from Sorted List II [具体分析]
查看>>
Spark SQL源代码分析之核心流程
查看>>
yum subversion puppet puppet-server
查看>>
C数据类型
查看>>
ARM标准汇编与GNU汇编
查看>>
MongoDB管理
查看>>
关于Cewu Lu等的《Combining Sketch and Tone for Pencil Drawing Production》一文铅笔画算法的理解和笔录。...
查看>>
解决网站在负载均衡环境下SESSION丢失的问题
查看>>
Hive On Spark环境搭建
查看>>
RMAN备份之丢失数据文件及控制文件的恢复
查看>>
跟我一起数据挖掘(23)——C4.5
查看>>
luars232库中用到的一些C API for lua
查看>>
Oracle 11g 更改字符集
查看>>
Android 使用Post方式提交数据(登录)
查看>>
一致性哈希算法原理设计
查看>>
Ubuntu 备份系统为ISO镜像 & 解决ISO限制4GB大小 & Clone当前系统到其他电脑
查看>>
MYSQL IFNULL使用功能
查看>>