我是靠谱客的博主 壮观橘子,最近开发中收集的这篇文章主要介绍python readlines慢_为什么在Python中readline()比readlines()慢得多?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

只是为了好玩,我写了一堆函数,遍历一个文件并将每一行放入一个列表中:#!/usr/bin/python

def readlines():

with open("sorted_output.txt") as f:

line = f.readlines()

def readline():

with open("sorted_output.txt") as f:

line = f.readline()

lines = []

while line:

lines.append(line)

line = f.readline()

def iterate():

with open("sorted_output.txt") as f:

lines = []

for line in f:

lines.append(line)

def comprehension():

with open("sorted_output.txt") as f:

lines = [line for line in f]

下面是如何使用Python2.6在69073行的文件上执行这些操作(注意,这些结果在较新版本的Python上可能有所不同):dano@hostname:~> python -mtimeit -s 'import test' 'test.readline()'

10 loops, best of 3: 78.3 msec per loop

dano@hostname:~> python -mtimeit -s 'import test' 'test.readlines()'

10 loops, best of 3: 21.6 msec per loop

dano@hostname:~> python -mtimeit -s 'import test' 'test.comprehension()'

10 loops, best of 3: 23.6 msec per loop

dano@hostname:~> python -mtimeit -s 'import test' 'test.iterate()'

10 loops, best of 3: 33.3 msec per loop

因此,readlines()在这里是最快的,尽管使用列表理解对每一行进行迭代几乎与它匹配。我的猜测是,每种方法之间的速度差异主要是Python中函数调用的高开销(需要的函数调用越多,方法越慢)造成的,但也可能有其他因素。希望比我更有见识的人能对此发表评论。

除了性能之外,在决定使用哪种方法时,另一个重要的考虑因素是内存开销。使用readlines()将立即将整个文件读入内存。如果你处理的是一个巨大的文件,如果你试图一次将整个文件读入内存,它可能会导致严重的性能问题或整个程序崩溃。在这些情况下,您需要在iterate()中使用该方法,因为它一次只向内存读取一行。如果您只是在每一行上执行某种处理,然后将其丢弃,这通常是一种方法,即使它比readlines()稍慢,因为您不会获得相同的内存命中率。当然,如果最终的目标是将整个文件存储在一个Python列表中,那么无论如何,您都要支付内存开销,因此readlines()可以正常工作。

最后

以上就是壮观橘子为你收集整理的python readlines慢_为什么在Python中readline()比readlines()慢得多?的全部内容,希望文章能够帮你解决python readlines慢_为什么在Python中readline()比readlines()慢得多?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部