Heim > Backend-Entwicklung > Python-Tutorial > So ermitteln Sie effizient die Anzahl der Zeilen in einer Datei

So ermitteln Sie effizient die Anzahl der Zeilen in einer Datei

anonymity
Freigeben: 2019-05-25 10:46:02
Original
2803 Leute haben es durchsucht

Einfache Methode:

Es muss die Anzahl der Zeilen einer großen Datei (Hunderttausende Zeilen) in Python ermittelt werden.

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass    return i + 1
Nach dem Login kopieren

So ermitteln Sie effizient die Anzahl der Zeilen in einer Datei

Effektive Methode (Pufferlesestrategie):

Erster Blick auf das laufende Ergebnis:

mapcount : 0.471799945831
simplecount : 0.634400033951
bufcount : 0.468800067902
opcount : 0.602999973297
Nach dem Login kopieren

Die Pufferlesestrategie scheint also für Windows/Python2.6 die schnellste zu sein.

Hier ist der Code:

from __future__ import with_statement
import time
import mmap
import random
from collections import defaultdict
def mapcount(filename):
    f = open(filename, "r+")
    buf = mmap.mmap(f.fileno(), 0)
    lines = 0
    readline = buf.readline
    while readline():
        lines += 1
    return lines
def simplecount(filename):
    lines = 0
    for line in open(filename):
        lines += 1
    return lines
def bufcount(filename):
    f = open(filename)                  
    lines = 0
    buf_size = 1024 * 1024
    read_f = f.read # loop optimization
    buf = read_f(buf_size)
    while buf:
        lines += buf.count('\n')
        buf = read_f(buf_size)
    return lines
def opcount(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1
counts = defaultdict(list)
for i in range(5):
    for func in [mapcount, simplecount, bufcount, opcount]:
        start_time = time.time()
        assert func("big_file.txt") == 1209138
        counts[func].append(time.time() - start_time)
for key, vals in counts.items():
    print key.__name__, ":", sum(vals) / float(len(vals))
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie effizient die Anzahl der Zeilen in einer Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage