python太慢了-python 读取大文件越来越慢
背景:
今天同事写代码,用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 读取大文件越来越慢相关推荐
- python读取大文件太慢_python读取大文件越来越慢的原因与解决
背景: 今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理.结果处理了一天还没有出来结果.问题出在哪里呢? 解决: 1. 同事打印了在不同时间点的时间,在需要的地方插入 ...
- vs下载python最后一点很慢-python读取大文件越来越慢的原因与解决
背景: 今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理.结果处理了一天还没有出来结果.问题出在哪里呢? 解决: 1. 同事打印了在不同时间点的时间,在需要的地方插入 ...
- python面试题之如何读取大文件
① 利用生成器generator ②迭代器进行迭代遍历:for line in file 本文首发于Python黑洞网,csdn同步跟新
- python读取视频占用内存太大_Python 读取大文件内存占用检测示例
导读热词对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录 ...
- python读取大文件太慢_强悍的Python读取大文件的解决方案
Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适 ...
- python读取大文件-python如何读取大文件以及分析时的性能优化小技巧
在二代.三代测序背景下,分析人员难免会遇到解析超过1G.或者10G以上的文件.这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议. 首先,python 读取GB级大文件 ...
- python读取大文件-使用Python读取大文件的方法
背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法. 准备工作 ...
- 使用python读取大文件
读取文件时,如果文件过大,则一次读取全部内容到内存,容易造成内存不足,所以要对大文件进行批量的读取内容. python读取大文件通常两种方法:第一种是利用yield生成器读取:第二种是:利用open( ...
- python 读取大文件
python 读取大文件 python读取文件一般情况是利用open()函数以及read()函数来完成: f = open(filename,'r') f.read() 这种方法读取小文件,即读取大小 ...
最新文章
- 【c语言】蓝桥杯算法提高 c++_ch02_01
- Spring Cloud 微服务开发系列整理
- 电脑温度测试软件_网购电脑够便宜?坑连着坑真的不好躲
- mysql高可用 持久层_MyBatis持久层框架使用总结 转载
- 跑monkey需要安装什么_智能门锁安装时需要注意什么?
- 深入解析Windows操作系统(笔记7)
- 纯前端实现pdf分页下载,完美支持横屏竖屏
- 微型计算机原理与接口技术 教案,微机原理与接口技术课程教与学(教学大纲)...
- 趣头条投放广告需要哪些资质?趣头条推广广告怎么样搭建账户?
- QQ微信可以上网,但是浏览器上不了网怎么办?
- Windows下自动云备份思源笔记到Gitee
- 阿里云的应用(day02)
- 【java注解--使用注解封装自动拼接sql 】
- 【Multisim仿真】NE555电路三角波、方波、正弦波发生器
- python_爬虫 16 Scrapy框架之(二)快速入门
- python调用adb shell命令_如何在python脚本里面连续执行adb shell后面的各种命令
- java new jsonparser_java – JSONParser无法解析为某种类型
- asp.net网站修改aspx.cs文件后如何不替换网站就生效
- mt4支持python么_py-mt4
- 指数和对数总结【图形+公式】