2014年5月27日

Python按行读文件对比

1. 最基本的读文件方法:

# File: readline-example-1.py
 
file = open("sample.txt")
 
while 1:
    line = file.readline()
    if not line:
        break
    pass # do something

  一行一行得从文件读数据,显然比较慢;不过很省内存。

  在我的机器上读10M的sample.txt文件,每秒大约读32000行

2. 用fileinput模块

# File: readline-example-2.py
 
import fileinput
 
for line in fileinput.input("sample.txt"):
    pass

  写法简单一些,不过测试以后发现每秒只能读13000行数据,效率比上一种方法慢了两倍多……

3. 带缓存的文件读取

# File: readline-example-3.py
 
file = open("sample.txt")
 
while 1:
    lines = file.readlines(100000)
    if not lines:
        break
    for line in lines:
        pass # do something

  这个方法真的更好吗?事实证明,用同样的数据测试,它每秒可以读96900行数据!效率是第一种方法的3倍,第二种方法的7倍!

 

在Python 2.2以后,我们可以直接对一个file对象使用for循环读每行数据:

# File: readline-example-5.py
 
file = open("sample.txt")
 
for line in file:
    pass # do something

  而在Python 2.1里,你只能用xreadlines迭代器来实现:

# File: readline-example-4.py
 
file = open("sample.txt")
 
for line in file.xreadlines():
    pass # do something

 

转自:http://www.cnblogs.com/xuxn/archive/2011/07/27/read-a-file-with-python.html

posted @ 2014-05-27 09:58 liangzh123 阅读(693) 评论(0) 推荐(0) 编辑

2013年10月1日

一致性hash算法

摘要: 一致性hash算法(consistent hashing)consistent hashing算法早在1997年就在论文Consistent hashing and random trees中被提出,目前在cache系统中应用越来越广泛;1基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你很可能会采用类似下面的通用方法计算object的hash值,然后均匀的映射到到N个cache;hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个cache服务器m down掉了(在实际应用中必须要考虑这种情况),这样所 阅读全文

posted @ 2013-10-01 16:22 liangzh123 阅读(233) 评论(0) 推荐(0) 编辑

2013年9月15日

Arrays.sort源代码解析

摘要: Java Arrays.sort源代码解析 Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。一、对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序。对这一区别,sun在>中做出的解释如下: The sort operation uses a slightly optimized merge sort algorithm that is f... 阅读全文

posted @ 2013-09-15 21:33 liangzh123 阅读(386) 评论(0) 推荐(0) 编辑

HashMap原理

摘要: 1. HashMap概述HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。3. HashMap的存取 HashMap的功能是通过“键(key)”能够快速的找到“值”。下面我们分析下HashMap存数据的基本流程: 1、 当调用 阅读全文

posted @ 2013-09-15 21:21 liangzh123 阅读(238) 评论(0) 推荐(0) 编辑

2013年6月21日

Java堆、栈和常量池

摘要: 1,对于栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。如以下代码:Java代码 String s1 = "china"; String s2 = "china"; S 阅读全文

posted @ 2013-06-21 15:17 liangzh123 阅读(373) 评论(0) 推荐(0) 编辑

Java多线程内存模型

摘要: Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。在此之前,主流程序怨言(如C/C++等)直接使用物理硬件(或者说操作系统的内存模型),因此,会由于不同的平台上内存模型差异,导致程序在一套平台上并发完成正常,而在另一套平台上并发访问却经常出错,因此经常需要针对不同的平台来编写程序。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variable)与java编程中所说的变量 阅读全文

posted @ 2013-06-21 15:14 liangzh123 阅读(450) 评论(0) 推荐(0) 编辑

2013年5月24日

动态规划笔试题

摘要: 1、最长公共子序列、最长公共子串最长公共子序列(Longest-Common-Subsequence,LCS)dp[i][j]:dp[i][j]表示长度分别为i和j的序列X和序列Y构成的LCS的长度 dp[i][j] = 0,如果i=0 或 j=0 dp[i][j] = dp[i-1][j-1] + 1,如果 X[i-1] = Y[i-1] dp[i][j] = max{ dp[i-1][j], dp[i][j-1] },如果 X[i-1] != Y[i-1] LCS长度为 dp[Xlen][Ylen]View Code int dp[100][100]; // 存储LCS长度, 下标i,j. 阅读全文

posted @ 2013-05-24 19:50 liangzh123 阅读(356) 评论(0) 推荐(0) 编辑

KMP算法

摘要: A="abababaababacb",B="ababacb",我们来看看KMP是怎么工作的。我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,i是不断增加的,随着i的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符(j当然越大越好),现在需要检验A[i+1]和B[j+1]的关系。当A[i+1]=B[j+1]时,i和j各加一;什么时候j=m了,我们就说B是A的子串(B串已经整完了),并且可以根据这时的i值算出匹配的位置。当A[i+1]<>B[j+1],KMP的策略是调整 阅读全文

posted @ 2013-05-24 19:47 liangzh123 阅读(140) 评论(0) 推荐(0) 编辑

2013年4月26日

距离和相似度度量

摘要: 在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)。当然衡量个体差异的方法有很多,这里整理罗列下。 为了方便下面的解释和举例,先设定我们要比较X个体和Y个体间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, … xn),Y=(y1, y2, y3, … yn)。下面来看看主要可以用哪些方法来衡量两者的差异,主要分为距离度量和相似度度量。距离度量 距离度量(Distance)用于衡量个体在空间上存在的距离,距离越远说明个体间的差异.. 阅读全文

posted @ 2013-04-26 10:10 liangzh123 阅读(837) 评论(0) 推荐(0) 编辑

2013年4月25日

奇异值分解SVD--几个实例

摘要: SVD is extraordinarily useful and has many applications such as data analysis, signal processing, pattern recognition, image compression, weather prediction, and Latent Semantic Analysis or LSA (also referred to as Latent Semantic Indexing or LSI).1,Data compressionSingular value decompositions can 阅读全文

posted @ 2013-04-25 20:00 liangzh123 阅读(1295) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示