在Python中读取输入的最快方法

我想读一个包含整数列表列表的大文本文件.
现在我正在做以下事情:

G = []
with open("test.txt", 'r') as f:
    for line in f:
        G.append(list(map(int,line.split())))

但是,它需要大约17秒(通过时间).有没有办法减少这个时间?也许,有一种方法不使用地图.

解决方法:

numpy具有loadtxt和genfromtxt的功能,但两者都不是特别快.广泛分布的库中最快的文本阅读器之一是pandas中的read_csv函数(http://pandas.pydata.org/).在我的计算机上,每行读取500万行包含两个整数的行使用numpy.loadtxt需要大约46秒,使用numpy.genfromtxt需要26秒,使用pandas.read_csv需要1秒多一点.

这是显示结果的会话. (这是在Linux上,Ubuntu 12.04 64位.你在这里看不到它,但在每次读取文件后,通过运行sync清除磁盘缓存; echo 3> / proc / sys / vm / drop_caches单独的壳.)

In [1]: import pandas as pd

In [2]: %timeit -n1 -r1 loadtxt('junk.dat')
1 loops, best of 1: 46.4 s per loop

In [3]: %timeit -n1 -r1 genfromtxt('junk.dat')
1 loops, best of 1: 26 s per loop

In [4]: %timeit -n1 -r1 pd.read_csv('junk.dat', sep=' ', header=None)
1 loops, best of 1: 1.12 s per loop
上一篇:使用php readfile确定成功下载


下一篇:python – 同时逐行读取两个文本文件