有一个jsonline格式的文件file.txt大小约为10K

def get_lines(): with open('file.txt','rb') as f: return f.readlines() if __name__ == '__main__': # 处理每一行数据for e in get_lines(): process(e)

假设现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些?

def get_lines(): with open('file.txt','rb') as f: for i in f: yield i

个人认为:还是设置下每次返回的行数较好,否则读取次数太多。

def get_lines(): l = [] with open('file.txt','rb') as f:    data = f.readlines(60000) l.append(data) yield l

Pandaaaa906提供的方法

from mmap import mmap def get_lines(fp): with open(fp,"r+") as f: m = mmap(f.fileno(), 0) tmp = 0 for i, char in enumerate(m): if char==b"\n": yield m[tmp:i+1].decode() tmp = i+1 if __name__=="__main__": for i in get_lines("fp_some_huge_file"):print(i)

要考虑的问题有:内存只有4G无法一次性读入10G文件,需要分批读入分批读入数据要记录每次读入数据的位置。分批每次读取数据的大小,太小会在读取操作花费过多时间。

一个10G的文件,但是内存只有4G,使用python如何进行性能调优?相关推荐

  1. linux打印jvm内存堆栈_5款强大的JVM 性能调优监控工具

    原文链接:www.iteye.com/blog/josh-persistence-2161848 现实企业级Java应用开发.维护中,有时候我们会碰到下面这些问题: OutOfMemoryError, ...

  2. java中数组的内存模型_Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型+虚拟机原理能解决什么样问题...

    在上一篇文章中,小编为您详细介绍了关于<变频器调速问题?三星R458更换CPU>相关知识.本篇中小编将再为您讲解标题Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型 ...

  3. hbase原理与实践_HBase 性能调优第一弹:内存篇

    这是使用 HBase 最不可避免的一个话题,就是 HBase 的性能调优,而且通常建立在我们对 HBase 内部运行机制比较了解的基础上进行的,因此无论怎么说,调优这块都是一个相对复杂的事情.这一篇我 ...

  4. rdd数据存内存 数据量_大数据开发-Spark调优常用手段

    Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...

  5. 压力机测试软件,一个典型的测试压力机的性能调优过程

    原标题:一个典型的测试压力机的性能调优过程 性能测试过程中,不仅仅是对被测系统的性能问题定位.分析.优化,很多时候负责批量请求发起的压力机也存在各类性能瓶颈.毕竟用几千块钱的机器就想把几个亿的机器压瘫 ...

  6. 文件上传服务器jvm调优,JVM性能调优解决方案(12页)-原创力文档

    精品文档 JVM性能调优解决方案(总结) 一.引言 本文的读者是技术支持人员.阅读本文后,你将理解 jboss 的启动脚本文件 (run.sh )中有一系列的 JVM配置参数的含义,以及如何调整它们, ...

  7. 服务器内存一般多大_性能调优第一步,搞定服务器硬件选型

    服务器选型是Linux性能调优的第一步. 无论你是自行购买服务器进行托管,还是租用服务器,购买云主机,都要面临的一个问题:选择服务器的硬件配置. 我们需要从不同角度.多个方面来决定选择一台什么样的服务 ...

  8. JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程

    2019独角兽企业重金招聘Python工程师标准>>> JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程 博客分类: java jvm 前言: 上一 ...

  9. eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战

    上一节我们讲了jinfo,jstat,jmap的使用,还简单的讲了下如何使用jmap导出内存映像文件,这次,我们来实战一把内存溢出问题. 环境准备 首先我们先模拟一下内存溢出的场景,以下这段代码在访问 ...

最新文章

  1. 基于RNN的NLP机器翻译深度学习课程 | 附实战代码
  2. mysql 查询调试_使用MySQL慢速查询日志进行调试
  3. linux lddbus设备,Linux那些事儿之我是Sysfs(4)举例一lddbus | 技术部落
  4. Python----面向对象---主动触发异常-raise
  5. ASP.NET程序中常用代码汇总(四)
  6. 零基础学习java------day7------面向对象
  7. Windows中非常实用的命令
  8. ASP.NET Core 通过 Microsoft.DotNet.Watcher.Tools 实现热部署
  9. 为什么手机升级系统反应慢了_手机卡顿反应慢怎么解决?久用不卡顿的手机盘点...
  10. Thread.Sleep太久,界面卡死
  11. 韩顺平细说jsp购物车项目--用户登录及验证
  12. GBDT算法原理以及实例理解
  13. android usb 9008,【2018.1.4更新】X极Qualcomm HS-USB QDLoader 9008救砖的4种方法
  14. 在线php中文手册,JavaScript中文参考手册
  15. chm打不开怎么办?
  16. 初中英语语法(010)-分词
  17. 卡西欧计算机开机键,卡西欧手表怎么开机
  18. 全家桶靠边站 用Windows自带功能解决3大难题
  19. 倚天鸿蒙系统,倚天屠龙记强化系统详解
  20. 【Excel神技】之 区域命名

热门文章

  1. 合肥工业大学c语言是试卷,合肥工业大学2005-2007年C语言程序设计试卷参考答案.doc-资源下载人人文库网...
  2. 豆瓣FM duilib版
  3. eclipse changer value
  4. 如何用脑图提升工作/生活效率?试试跨平台云储存的 MindMaster
  5. 海尔集团CEO张瑞敏演讲稿:人不成熟的5大特征
  6. 面向次世代的Windows App SDK 近况
  7. SAP 发货成本中心
  8. 关于充电电池(AA型和AAA型)
  9. 金蝶K3与AUTOCAD2007兼容性,打开金蝶K3时候提示配置问题
  10. java三角形的画法