Tengo un script muy simple ahora que cuenta con líneas en un archivo de texto usando enumerate()
:(Python) Contar líneas en un enorme (> 10 GB) presentar lo más rápido posible
i = 0
f = open("C:/Users/guest/Desktop/file.log", "r")
for i, line in enumerate(f):
pass
print i + 1
f.close()
Esto toma alrededor de 3 y medio minuto para pasar por un archivo de registro de 15 GB con ~ 30 millones de líneas. Sería genial si pudiera obtener esto menos de dos minutos o menos, porque estos son registros diarios y queremos hacer un análisis mensual, por lo que el código tendrá que procesar 30 registros de ~ 15GB, más de una hora y media posiblemente , y nos gustaría minimizar el tiempo de carga de la memoria & en el servidor.
También me conformarse con un método de buena aproximación/estimación, pero tiene que ser de 4 sig fig precisa ...
Gracias!
En general, probablemente sería más rápido tratar el archivo como datos binarios, leerlo en fragmentos de tamaño razonable (digamos, 4 KB a la vez) y contar los caracteres '\ n' en cada fragmento sobre la marcha. – aroth
Esto no es mejor que su solución ingenua, pero fyi la forma pitónica de escribir lo que tiene aquí sería simplemente 'con abrir (fname) como f: imprimir suma (1 para la línea en f)' – wim
aroth: Gracias por el consejo, debería ver eso. wim: genial, gracias, eso es mucho más corto ... – Adrienne