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

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

python 类变量 none 内存泄露_Python中使用自定义类class作为海量数据结构时内存占用巨大的问题...相关推荐

  1. android中内存泄露,Android中的内存泄露

    编辑推荐: 本文来自于csdn,本文主要从java的内存模型讲起,最终举出几个内存泄露的例子和解决方案. java运行时内存模型 具体信息:http://gityuan.com/2016/01/09/ ...

  2. DELPHI 中的自定义类笔记(一) OBJECT 创建类 不用 CREATE 【转】

    原文:http://www.cnblogs.com/delphi-xe5/articles/3884154.html Delphi 中的自定义类笔记(一) 类的声明 有两种声明办法 一.自定义类的父类 ...

  3. python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  4. python的内存泄露_Python 程序的内存泄露,教你一招来解决?

    如果大家在 Linux 或者 macOS 下面运行一段可能导致内存泄露的程序,那么你可能会看到下面这样的情况: 而如果你用的系统是 Windows,那么可能电脑直接就卡死了. 但是,调试这种 OOM( ...

  5. python如何在手机运行内存_Python中对象的内存使用(一)

    ❯ venv/bin/ipython Python 3.8.0b3+ (heads/3.8:9bedb8c9e6, Aug 13 2019, 10:49:01) Type 'copyright', ' ...

  6. vs调试c语言检查内存泄露,VisualStudio中检查内存泄露方法

    项目工程中存在内存泄露,被折磨了一晚上,终于查了出来,因为之前没有相关的经验,还比较生疏,在此记录下来,方便以后查找. 对于malloc出的内存的检测方法 这篇文章中详细地记录了从检查到找到确定位置到 ...

  7. python如何复制一个变量_Python中变量、赋值、浅拷贝、深拷贝

    在理解浅拷贝和深拷贝之前,首先要理解学习一下变量在Python中是怎样存储的: 变量的类型是分值引用与地址引用两种. python的一切变量都是对象,变量的存储,采用了地址引用的方式,存储的只是一个变 ...

  8. 编写python程序、创建名为class的数据库_Python中的元类(metaclass)以及元类实现单例模式...

    一.理解类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在P ...

  9. python中的元类_Python中的元类(metaclass)

    提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...

最新文章

  1. 文本间加入任意字符的PHP函数
  2. Delphi 中的 XMLDocument 类详解(5) - 获取元素内容
  3. 开发日记-20190603 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  4. linux phpstorm安装和激活方法
  5. python学习笔记-flask学习(一)route适配器
  6. C++彩色数据流动界面
  7. 第三章 Spark运行模式及原理
  8. java pdf验签_java pdf验签
  9. php验证邮箱的通用函数,PHP函数:PHP的通用检测函数总结
  10. Maven学习总结(18)——深入理解Maven仓库
  11. 联手寒武纪发布AI推理服务器,推出AI管理平台,中科曙光也All in AI
  12. java肯尼亚_对肯尼亚这个国家,你有什么好奇的?对它的第一印象是什么?
  13. python抛出异常的关键字_浅谈python抛出异常、自定义异常, 传递异常
  14. eclipse窗口设置
  15. 通信工程师考试基本情况及经验分享
  16. Java调用OpenDDS(1)-编译安装openDDS-补上了所有网络上其他文章遗漏的细节
  17. java连接sybase的pom_SpringBoot下多数据源连接Sybase数据库
  18. Windows Server 2016域控服务器如何取消密码复杂性规则
  19. 最新二开版本的源码博客论坛源码,UI很漂亮。
  20. iOS 开源图形库 Core Plot 使用教程

热门文章

  1. pthread线程传递数据回主线程_操作系统4:线程(1)
  2. java 定时调度_怎么编写一个定时调度java程序
  3. mysql5.7.21压缩版_mysql5.7.21解压版安装配置图文
  4. windows批处理执行多条命令
  5. vue + element-ui tab切换
  6. Android开发笔记(八)神奇的shape
  7. matlab练习程序(径向模糊1)
  8. Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用
  9. 数据科学入门的5个技巧
  10. Python笔记9-----不等长列表转化成DataFrame