python读取大文件-python如何读取大文件以及分析时的性能优化小技巧
在二代、三代测序背景下,分析人员难免会遇到解析超过1G、或者10G以上的文件。这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议。
首先,python 读取GB级大文件,常规使用open() 内置函数进行打开操作。
python打开文件后,在进行读取内容时分三种情况:
(1)read() 读取整个文件,通常将文件内容放到一个字符串变量中;
(2)readline() 每次读取一行内容;
(3)readlines() 一次性读取所有内容并按行返回list;
当文件较大时,使用read() 函数将文件内容全部读取到内存中,当文件大小超过内存是,可能会导致内存溢出,此时可以定义一个tmp_size,即每次读取的文件大小,如下,tmp_size为2M大小:
但是在读取大文件时,不是内存溢出、就是需要自定义tmp_size大小,所以,这里推荐大家用with open()函数,它可以让系统自动进行IO缓存和内存管理,不需要管系统怎么去分配这些内存,并且在读取完毕之后,不需要手动去close() 文件句柄。
随后,这里讲解下python对于文件打开时的操作模式:
我们最常用的就是三种模式'r'、'w'、'a'。读取文件信息时,采用'r'(read);写文件时分两种,一个是追加、一个是覆盖重写,分别对应'a'(append)和'w'(write),这两种模式对于不存在的文件首先会进行创建。
既然已经读取了文件内容,那下面就是需要对文件内容进行提取、存储,在存储方面,我们最常用的是list,以及dict。下面我们将就这两种数据类型进行优化技巧说明:
首先list,如果数据量很小,那用list还是set没有分别,但是如果你需要保存超过100的元素时,建议换成set()【这个set简直不要太好用啊~~】,set() 数据集在分析过程中不管是添加元素(add)还是判断元素是否存在,都会比list快至少1倍以上(当然数据越大,越明显)。作者曾经试过在list中存储1千个以上元素时,判断元素是否存在这个过程将非常耗时,但如果用set,整体时间将大大缩短【感觉整个人都轻松了许多】。
然后是dict,dict在存储value时,如果key对应的value是一个数组,比如基因的exon的起始位点有多个,那可以将多个起始位点的值存储为set类型,在exon较多的时候,脚本运行性能会有比较明显的提升。当然最多的时候我们对dict是进行key、value的遍历,一般遍历有两种方式:
在python2中,items() 方式返回的是一个list,那当数据很大时,会消耗大量内存,导致系统运行缓慢;而iteritems()方式返回的是一个迭代器并非列表。所以在python2中如果需要对key和value同时遍历时,采用iteritems() 效率更高。当然在python3中,对items() 的方式进行了优化,也返回迭代器,所以在python3中iteritems()的方式被取消了。
扫一扫,了解更多资讯
武汉博越致和生物科技有限公司
个人微信 :hsm664422
电话:027-87705460
我知道你会来,所以我等
python读取大文件-python如何读取大文件以及分析时的性能优化小技巧相关推荐
- 小程序通过 ajax读取的图片数据如何展示_一个常被忽略的intouch的小技巧—鼠标悬停...
JZGKCHINA工控技术分享平台经常看到网上的大数据采集平台,平台的前端都是采用H5编写,熟悉H5技术的人应该都知道,H5主要是负责编写前台页面,炫酷的网站页面交互特效.3D效果都离不开H5.但是作 ...
- 文件夹名如何快速重命名,教你重命名小技巧
在整理文件夹里怎样给文件夹重命名呢?比如文件夹中有些空格,怎样去掉空格?需要用到重命名的方法,可是大量的文件夹怎样快速重命名去除呢?下面一起来试试这个批量重命名的技巧吧. 准备用到的工具,先在电脑软件 ...
- nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...
决定优化方向 首先打开 Inspect - Network 查看请求情况,从图片可以看出,DOMContentLoaded 时间为 2.67s,Load 时间为 3.45s,资源交换为 2.4MB. ...
- python tableau工作流_【干货】五分钟Get到Tableau五个实用小技巧
现在大家的学习时间往往是碎片化的,很难有机会耐心的读完一篇技巧性的博客文章.短平快的知识输入就成了必然选择.因此慧都网整合Tableau 5 个非常实用且容易掌握的技巧,只需不到 5 分钟就能学会!令 ...
- 三星android耗电量大怎么办,三星S9耗电太快怎么办?四个省电小技巧教给你!
把设置里能关的功能都关掉,合理运用智能管理器,续航就不会太差了.bixby(语音唤醒最费电).息屏显示.同步.自动调节亮度这几个是比较费电的程序,大家根据平时使用选择关不关闭.下面还给大家分享一些三星 ...
- 启动转换安装失败 拷贝windows安装文件时出错_系统小技巧:“徒手”创建可启动的VHD系统...
本刊曾介绍过创建Windows 10 VHD虚拟系统的方法,创建这样的系统除了需要用到Windows 10的ISO安装文件外,还要用到相应的第三方工具.实际上,不用任何第三方工具,仅通过Windows ...
- python处理excel大数据-Python实现大数据收集至excel的思路详解
一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...
- 记录一下Python的11个小技巧
在使用python过程中,也是观看了很多视频,记录下10个小技巧,提高使用时代码的可读性和速度,干货满满!!! 变量,列表,还有语法,函数,希望对大家有帮助! 1.变量的交换 在python 中对于两 ...
- Android 性能优化五大误区和两大疑点!
近年来,社区充斥着关于 Android 性能优化的各种误区,本文本着误区终结者的精神,使用具体的性能检测工具,结合真实案例仔细分析这些情况,并对比它们的测试结果,也会聚焦 Android 开发者平时在 ...
最新文章
- mysqldump导入导出百万级数据解决方案
- 第一家线下场景大数据平台Anchor-Point诞生
- 皮一皮:老板是个学渣...
- SUSE11sp3 perf工具安装过程
- 高性能服务器架构(二):缓存清理策略
- 深入Java虚拟机:Class文件实例解析
- 学数学或物理学到 high 很刺激,是一种怎样的经历与感受?
- Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取
- python画矩形函数drawrectangle_Python3 tkinter基础 Canvas create_rectangle 画矩形
- 回忆Java基础中Map的遍历方法
- 编写自己的Windows Live Writer插件
- 正则匹配图片地址 php,php正则匹配图片地址
- 基于SSM框架的图书管理系统
- Software System [vaynexiao]
- 用户交易数据分析 -持仓收益(盈亏)胜率等指标计算
- (二)基于区块链的自动抽奖系统从0到1实现
- spring事务管理总结 .
- 张俊红 python_我的朋友张俊红成长之路
- mysql查询日期格式_mysql 日期格式化查询
- CPU频率到底是什么
热门文章
- 《The Elements of Statistical Learning》 chp3 Linear Models for Regression
- 预备作业02 20162316刘诚昊
- RecyclerView android:layout_width=match_parent无效
- soapui + groovy 接口自动化测试 第八章
- wpf MVVM ViewModel 关闭View显示
- 【js】indexOf()
- css3替代图片的尖角圆角效果
- 正则在开发过程中的妙用
- 使用Struts2防止表单重复提交
- == ===区别,利用!= !==判空。