在二代、三代测序背景下,分析人员难免会遇到解析超过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如何读取大文件以及分析时的性能优化小技巧相关推荐

  1. 小程序通过 ajax读取的图片数据如何展示_一个常被忽略的intouch的小技巧—鼠标悬停...

    JZGKCHINA工控技术分享平台经常看到网上的大数据采集平台,平台的前端都是采用H5编写,熟悉H5技术的人应该都知道,H5主要是负责编写前台页面,炫酷的网站页面交互特效.3D效果都离不开H5.但是作 ...

  2. 文件夹名如何快速重命名,教你重命名小技巧

    在整理文件夹里怎样给文件夹重命名呢?比如文件夹中有些空格,怎样去掉空格?需要用到重命名的方法,可是大量的文件夹怎样快速重命名去除呢?下面一起来试试这个批量重命名的技巧吧. 准备用到的工具,先在电脑软件 ...

  3. nuxt解决首屏加载慢问题_滴普大前端 | 滴普是如何实现首屏加载性能优化的?...

    决定优化方向 首先打开 Inspect - Network 查看请求情况,从图片可以看出,DOMContentLoaded 时间为 2.67s,Load 时间为 3.45s,资源交换为 2.4MB. ...

  4. python tableau工作流_【干货】五分钟Get到Tableau五个实用小技巧

    现在大家的学习时间往往是碎片化的,很难有机会耐心的读完一篇技巧性的博客文章.短平快的知识输入就成了必然选择.因此慧都网整合Tableau 5 个非常实用且容易掌握的技巧,只需不到 5 分钟就能学会!令 ...

  5. 三星android耗电量大怎么办,三星S9耗电太快怎么办?四个省电小技巧教给你!

    把设置里能关的功能都关掉,合理运用智能管理器,续航就不会太差了.bixby(语音唤醒最费电).息屏显示.同步.自动调节亮度这几个是比较费电的程序,大家根据平时使用选择关不关闭.下面还给大家分享一些三星 ...

  6. 启动转换安装失败 拷贝windows安装文件时出错_系统小技巧:“徒手”创建可启动的VHD系统...

    本刊曾介绍过创建Windows 10 VHD虚拟系统的方法,创建这样的系统除了需要用到Windows 10的ISO安装文件外,还要用到相应的第三方工具.实际上,不用任何第三方工具,仅通过Windows ...

  7. python处理excel大数据-Python实现大数据收集至excel的思路详解

    一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...

  8. 记录一下Python的11个小技巧

    在使用python过程中,也是观看了很多视频,记录下10个小技巧,提高使用时代码的可读性和速度,干货满满!!! 变量,列表,还有语法,函数,希望对大家有帮助! 1.变量的交换 在python 中对于两 ...

  9. Android 性能优化五大误区和两大疑点!

    近年来,社区充斥着关于 Android 性能优化的各种误区,本文本着误区终结者的精神,使用具体的性能检测工具,结合真实案例仔细分析这些情况,并对比它们的测试结果,也会聚焦 Android 开发者平时在 ...

最新文章

  1. mysqldump导入导出百万级数据解决方案
  2. 第一家线下场景大数据平台Anchor-Point诞生
  3. 皮一皮:老板是个学渣...
  4. SUSE11sp3 perf工具安装过程
  5. 高性能服务器架构(二):缓存清理策略
  6. 深入Java虚拟机:Class文件实例解析
  7. 学数学或物理学到 high 很刺激,是一种怎样的经历与感受?
  8. Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取
  9. python画矩形函数drawrectangle_Python3 tkinter基础 Canvas create_rectangle 画矩形
  10. 回忆Java基础中Map的遍历方法
  11. 编写自己的Windows Live Writer插件
  12. 正则匹配图片地址 php,php正则匹配图片地址
  13. 基于SSM框架的图书管理系统
  14. Software System [vaynexiao]
  15. 用户交易数据分析 -持仓收益(盈亏)胜率等指标计算
  16. (二)基于区块链的自动抽奖系统从0到1实现
  17. spring事务管理总结 .
  18. 张俊红 python_我的朋友张俊红成长之路
  19. mysql查询日期格式_mysql 日期格式化查询
  20. CPU频率到底是什么

热门文章

  1. 《The Elements of Statistical Learning》 chp3 Linear Models for Regression
  2. 预备作业02 20162316刘诚昊
  3. RecyclerView android:layout_width=match_parent无效
  4. soapui + groovy 接口自动化测试 第八章
  5. wpf MVVM ViewModel 关闭View显示
  6. 【js】indexOf()
  7. css3替代图片的尖角圆角效果
  8. 正则在开发过程中的妙用
  9. 使用Struts2防止表单重复提交
  10. == ===区别,利用!= !==判空。