Estoy leyendo algunos datos del archivo avro usando la biblioteca avro. Lleva aproximadamente un minuto cargar 33K objetos del archivo. Esto me parece muy lento, especialmente con la versión de Java leyendo el mismo archivo en aproximadamente 1 segundo.implementación Python de avro lento?
Aquí está el código, ¿estoy haciendo algo mal?
import avro.datafile
import avro.io
from time import time
def load(filename):
fo = open(filename, "rb")
reader = avro.datafile.DataFileReader(fo, avro.io.DatumReader())
for i, record in enumerate(reader):
pass
return i + 1
def main(argv=None):
import sys
from argparse import ArgumentParser
argv = argv or sys.argv
parser = ArgumentParser(description="Read avro file")
start = time()
num_records = load("events.avro")
end = time()
print("{0} records in {1} seconds".format(num_records, end - start))
if __name__ == "__main__":
main()
Tu código no hace nada. Si hay un problema de velocidad es con Avro. –
'load()' debe llamar a 'fo.close()' antes de que regrese, en lugar de dejar el archivo abierto. Sin embargo, probablemente no sea motivo de desaceleración. – Velociraptors
si quieres saber por qué es lento, aprende a usar un generador de perfiles. –