背景:

今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理。结果处理了一天还没有出来结果。问题出在哪里呢?

解决:

1. 同事打印了在不同时间点的时间,在需要的地方插入如下代码:

print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

发现一个规律,执行速度到后面时间越来越长,也就是处理速度越来越慢。

2. 为什么会越来越慢呢?

1)可能原因1,GC 的问题,有篇文章里面写,python list append 的时候会越来越慢,解决方案是禁止GC:

使用 gc.disable()和gc.enable()

2)改完上面,仍然不行,然后看到一篇文章里面写,可能是因为 git 导致的,因为append 的时候 git 会不断同步,会出问题,于是删除 .git 文件夹,结果还是不行。

3)继续查询,发下一个及其有可能出问题的地方。dict 的 in dict.key(),判断 key 是否在 dict 里面,这个的效率是非常低的。看到一篇文章比较了效率:

① 使用 in dict.keys() 效率:

② 使用 has_key() 效率:

发现 has_key() 效率比较稳定。于是修改,问题解决。

后话:

最初的时候,的确是使用 has_key(), 结果后面上传代码的时候,公司代码检查过不了,提示不能使用这个函数,只能改成 in dict.key() 这种方式,为什么公司不让这么传呢?经过一番百度,发现原因所在:在 python3 中,直接将 has_key() 函数给删除了,所以禁止使用。那禁止了该怎么办呢?原来 python 中 in 很智能,能自动判断 key 是否在字典中存在。所以最正规的做法不是 has_key(), 更不是 in dict.keys(), 而是 in dict. 判断 key 在 map 中,千万别用 in dict.keys() !!!

附录:

in、 in dict.keys()、 has_key() 方法实战对比:

>>> a = {'name':"tom", 'age':10, 'Tel':110}

>>> a

{'age': 10, 'Tel': 110, 'name': 'tom'}

>>> print 'age' in a

True

>>> print 'age' in a.keys()

True

>>>

>>> print a.has_key("age")

True

参考资料:

python太慢了-python 读取大文件越来越慢相关推荐

  1. python读取大文件太慢_python读取大文件越来越慢的原因与解决

    背景: 今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理.结果处理了一天还没有出来结果.问题出在哪里呢? 解决: 1. 同事打印了在不同时间点的时间,在需要的地方插入 ...

  2. vs下载python最后一点很慢-python读取大文件越来越慢的原因与解决

    背景: 今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理.结果处理了一天还没有出来结果.问题出在哪里呢? 解决: 1. 同事打印了在不同时间点的时间,在需要的地方插入 ...

  3. python面试题之如何读取大文件

    ① 利用生成器generator ②迭代器进行迭代遍历:for line in file 本文首发于Python黑洞网,csdn同步跟新

  4. python读取视频占用内存太大_Python 读取大文件内存占用检测示例

    导读热词对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录 ...

  5. python读取大文件太慢_强悍的Python读取大文件的解决方案

    Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适 ...

  6. python读取大文件-python如何读取大文件以及分析时的性能优化小技巧

    在二代.三代测序背景下,分析人员难免会遇到解析超过1G.或者10G以上的文件.这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议. 首先,python 读取GB级大文件 ...

  7. python读取大文件-使用Python读取大文件的方法

    背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法. 准备工作 ...

  8. 使用python读取大文件

    读取文件时,如果文件过大,则一次读取全部内容到内存,容易造成内存不足,所以要对大文件进行批量的读取内容. python读取大文件通常两种方法:第一种是利用yield生成器读取:第二种是:利用open( ...

  9. python 读取大文件

    python 读取大文件 python读取文件一般情况是利用open()函数以及read()函数来完成: f = open(filename,'r') f.read() 这种方法读取小文件,即读取大小 ...

最新文章

  1. 【c语言】蓝桥杯算法提高 c++_ch02_01
  2. Spring Cloud 微服务开发系列整理
  3. 电脑温度测试软件_网购电脑够便宜?坑连着坑真的不好躲
  4. mysql高可用 持久层_MyBatis持久层框架使用总结 转载
  5. 跑monkey需要安装什么_智能门锁安装时需要注意什么?
  6. 深入解析Windows操作系统(笔记7)
  7. 纯前端实现pdf分页下载,完美支持横屏竖屏
  8. 微型计算机原理与接口技术 教案,微机原理与接口技术课程教与学(教学大纲)...
  9. 趣头条投放广告需要哪些资质?趣头条推广广告怎么样搭建账户?
  10. QQ微信可以上网,但是浏览器上不了网怎么办?
  11. Windows下自动云备份思源笔记到Gitee
  12. 阿里云的应用(day02)
  13. 【java注解--使用注解封装自动拼接sql 】
  14. 【Multisim仿真】NE555电路三角波、方波、正弦波发生器
  15. python_爬虫 16 Scrapy框架之(二)快速入门
  16. python调用adb shell命令_如何在python脚本里面连续执行adb shell后面的各种命令
  17. java new jsonparser_java – JSONParser无法解析为某种类型
  18. asp.net网站修改aspx.cs文件后如何不替换网站就生效
  19. mt4支持python么_py-mt4
  20. 指数和对数总结【图形+公式】

热门文章

  1. 个性化选修——软件工程相关笔记
  2. Java多线程系列七——ExecutorService
  3. Linux下的一些问题收集及解决方法(二)
  4. Zookeeper 的学习与运用
  5. JS获取整个页面的文档
  6. 嵌入式Linux利用ppp实现4G模块联网
  7. 前段框架——Vue的get和post请求数据
  8. Mongodb常用增删改查语法
  9. swustoj?id=15 A+B
  10. Git 学习(二)版本库创建