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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
参考资料:
https://www.jb51.net/article/145424.htm
时间: 2019-08-05
python读取大文件太慢_python读取大文件越来越慢的原因与解决相关推荐
- python读取文件第一行_python读取文件首行和最后一行
python读取文件最后一行两种方式 1)常规方法:从前往后依次读取 步骤:open打开文件. 读取文件,把文件所有行读入内存. 遍历所有行,提取指定行的数据. 优点:简单,方便 缺点:当文件大了以后 ...
- python读取字符串指定位置字符_python读取txt文件中特定位置字符的方法
python读取txt文件中特定位置字符的方法 如下所示: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...
- python加载图片并显示_python读取目录下所有的jpg文件,并显示第一张图片的示例...
python读取目录下所有的jpg文件,并显示第一张图片的示例 如下所示: # -*- coding: UTF-8 -*- import numpy as np import os from scip ...
- python dialect='excel'是什么意思_python读取和生成excel文件
今天来看一下如何使用python处理excel文件,处理excel文件是在工作中经常用到的,python为我们考虑到了这一点,python中本身就自带csv模块... 今天来看一下如何使用python ...
- python 读取excel太慢_Python 读取excel并转换为字典
方法一:利用利用xlrd读取excel文件 其实整个过程比较简单,利用xlrd读取excel文件,再把读取到的数据转换为dict即可. 1.安装 xlrd pip install xlrd 2.读取文 ...
- python读取excel内容和写入_Python读取和写入Excel文件
制作Excel表 常用方法说明 Workbook类 Workbook类创建一个XlswWrite的Workbook对象,相当于创建一个excel表 And_worksheet()用来创建工作表,默认为 ...
- python读取输入数据的第二行_Python读取键盘输入的2种方法
如何获取用户的输入 | 手把手教你入门Python之十六 上一篇:三种主要的输出 | 手把手教你入门Python之十五下一篇:进制转换 | 手把手教你入门Python之十七 本文来自于千锋教育在阿里云 ...
- mfc读取txt文件并显示_Python入门丨文件读写
文件读写 文件读写,是Python代码调用调用电脑文件的主要功能,能被用于读取和写入文本记录.音频片段.Excel文档.保存邮件以及任何保存在电脑上的东西. 读取文件 读取文件三个步骤: 准备工作:首 ...
- python读取配置文件存在某配置_Python读取ini配置文件的方式
ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(键=值).使用的配置 ...
最新文章
- 为什么要读源代码,如何阅读源代码
- 重载、重写(覆盖)、隐藏(重定义)
- 1070 Mooncake (25 分)【难度: 简单 / 知识点: 贪心】
- div高度、宽度100% div width、height 100%
- 实现自己的.NET Core配置Provider之EF
- 生态系统长期观测数据产品体系
- LinuxCNC解析(一)之安装Linuxcnc所需要的依赖包
- android获取app内存信息,Android 获取内存信息(RAM,ROM)
- 图论算法——有向图的可达性与寻路
- When I’m old and dying
- win xp故障恢复控制台应用实例
- Mac电脑如何通过终端隐藏应用程序?
- 实现一个简单的H5领红包的动画
- IE浏览器页面卡死问题
- oracle-经典图书收集
- 常用元器件使用方法1:DCDC降压芯片SY8303的使用方法
- 一起赚美元⑤ | Instapainting照片转油画服务,通过SEO优化,每月赚取3.2万美元的真实案例
- vivado配置zynq硬件
- linux mysql mof提权,mysql提权之mof提权
- 《重说中国近代史》—张鸣—两个世界的第一次碰撞