Python如何处理大数据?3个技巧效率提升攻略(推荐)
作者:c710473510 发布时间:2022-04-02 10:03:03
如果你有个5、6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用multiprocessing 处理,但是效率非常低。于是,有人用python处理大文件还是会存在效率上的问题。因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~
所以,为什么用python处理大文件总有效率问题?
如果工作需要,立刻处理一个大文件,你需要注意两点:
01、大型文件的读取效率
面对100w行的大型数据,经过测试各种文件读取方式,得出结论:
with open(filename,"rb") as f:
for fLine in f:
pass
方式最快,100w行全遍历2.7秒。
基本满足中大型文件处理效率需求。如果rb改为r,慢6倍。但是此方式处理文件,fLine为bytes类型。但是python自行断行,仍旧能很好的以行为单位处理读取内容。
02、文本处理效率问题
这里举例ascii定长文件,因为这个也并不是分隔符文件,所以打算采用列表操作实现数据分割。但是问题是处理20w条数据,时间急剧上升到12s。本以为是byte.decode增加了时间。遂去除decode全程bytes处理。但是发现效率还是很差。
最后用最简单方式测试,首次运行,最简单方式也要7.5秒100w次。
想知道这个方式处理的完整代码是什么吗?扫描文末二维码,联系小编可以获取哦~
那么关于python处理大文件的技巧,从网络整理三点:列表、文件属性、字典三个点来看看。
1.列表处理
def fun(x):尽量选择集合、字典数据类型,千万不要选择列表,列表的查询速度会超级慢,同样的,在已经使用集合或字典的情况下,不要再转化成列表进行操作,比如:
values_count = 0
# 不要用这种的
if values in dict.values():
values_count += 1
# 尽量用这种的
if keys,values in dict:
values_count += 1
后者的速度会比前者快好多好多。
2. 对于文件属性
如果遇到某个文件,其中有属性相同的,但又不能进行去重操作,没有办法使用集合或字典时,可以增加属性,比如将原数据重新映射出一列计数属性,让每一条属性具有唯一性,从而可以用字典或集合处理:
return '(' + str(x) + ', 1)'
list(map(fun,[1,2,3]))
使用map函数将多个相同属性增加不同项。
3. 对于字典
多使用iteritems()少使用items(),iteritems()返回迭代器:
>>> d = {'a':1,'b':2}
>>> for i in d.items() :
.... print i
('a',1)
('b',2)
>>> for k,v in d.iteritems() :
... print k,v
('a',1)
('b',2)
字典的items函数返回的是键值对的元组的列表,而iteritems使用的是键值对的generator,items当使用时会调用整个列表 iteritems当使用时只会调用值。
除了以下5个python使用模块,你还有什么技巧解决大文件运行效率的问题吗?深入了解更多Python实用模块,快速提升工作效率~
读写文件技术,今后会用到测试数据的参数化和测试报告写作功能中~
数据处理技术,今后测试脚本的测试数据处理过程可以用到~
数据统计分析技术,今后会在测试结果分析中用到
图表展示技术,在今后的测试框架中相关测试报告会用到
程序自动触发技术,可用于测试脚本程序的自动执行。
以上所述是小编给大家介绍的Python如何处理大数据?3个技巧效率提升攻略详解整合网站的支持!
来源:https://blog.csdn.net/c710473510/article/details/89191364


猜你喜欢
- 在上篇文章给大家介绍了BootstrapTable与KnockoutJS相结合实现增删改查功能【一】,介绍了下knockout.js的一些基
- 安装配置MongoDB驱动安装驱动go get -u github.com/mongodb/mongo-go-driver初始化模块go m
- 使用pyaudio录音和格式转化环境pip3 install pyaudiopip3 install wavepip3 install nu
- 实验环境:tensorflow版本1.2.0,python2.7介绍depthwise_conv2d来源于深度可分离卷积:Xception:
- 1、from ... import 导入from package import module1, module2, module3, ...
- 这篇文章主要介绍了Python如何在DataFrame增加数值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 常量:用于储存一个不会变化也不希望变化的数据的标示符(命名规则与变量相同)定义形式:使用 define() 函数定义使用形式:define(
- 在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,在SQL Server中集成了很多成批导入数据的方法。有些项目实施顾问头疼
- 1 无参数情况配置URL及其视图如下:(r'^hello/$', hello)def hello(request): &nb
- 今天,发现了一个之前从未注意的角落,相信能够大大提高自己写JS的速度。能够迅速发现错误。例如,今天的加班中调试一个js错误发现的一个例子。1
- 什么是正则表达式?1、正则表达式是检擦、匹配字符串的表达式2、正则表达式是描述规则,主流语言都有良好支持3、字符串校验、查找与替换是正则表达
- 我就废话不多说了,直接上代码吧!# 寻找局部最高点# 输入input: 含有最高点高度的列表# 输出output: 返回最高点的位置# 时间
- 1.简介TensorFlow是一个由Google Brain团队开发的开源软件库,用于各种人工智能和机器学习应用,包括神经网络、深度学习、强
- 自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法对于div,
- 1. 前言python除了丰富的第三方库外,本身也提供了一些内在的方法和底层的一些属性,大家比较常用的如dict、list、set、min、
- <?php/*======================================事务处理==================
- Vue添加全局store在命令行中输入安装npm install --save vuex在main.js文件中引用store和在new Vu
- python 爬虫解决403禁止访问错误在Python写爬虫的时候,html.getcode()会遇到403禁止访问的问题,这是网站对自动化
- 字符串的编码格式什么是编码格式?通俗来讲,编码格式就是编码的规则在脚本的开头指定编码格式,来告诉操作系统根据什么编码规则来解析代码常见的编码
- 模拟动态产生字母验证码图片模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理。这里介绍一下 Python 提供的 Pillo