我從Avro的文件中使用的Avro圖書館閱讀一些數據。從文件中加載33K個對象需要大約一分鐘的時間。這對我來說似乎很慢,特別是在約1秒內讀取相同文件的Java版本。avro的Python執行速度慢嗎?
下面是代碼,我做錯了什麼?
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()
您的代碼不會執行任何操作。如果有與速度有關的速度問題。 – 2011-05-05 21:24:06
'負載()'應該叫'fo.close()'返回之前,而不是把文件打開。雖然這可能不是減速的原因。 – Velociraptors 2011-05-05 21:26:29
如果你想知道爲什麼它很慢,學習如何使用探查器。 – 2011-05-05 21:28:46