Я работаю над проектом, который включает большие данные, хранящиеся в файлах .txt
. Моя программа работает немного медленнее. Причина в том, что я думаю, что моя программа анализирует файл неэффективно.Python -Оптимизировать разбор файлов
образец файла:
X | Y | Weight
--------------
1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
PARSER КОД:
def _parse(pathToFile):
with open(pathToFile) as f:
myList = []
for line in f:
s = line.split()
x, y, w = [int(v) for v in s]
obj = CoresetPoint(x, y, w)
myList.append(obj)
return myList
Эта функция вызывается NumberOfRows/N
раз, когда я только разобрать небольшую порцию данных для обработки до тех пор, никаких линий не оставил. Мой .txt
- это несколько Giga Bytes.
Я, очевидно, вижу, что я повторяю NumberOfLines
раз в цикле, и это огромное узкое место и BAD. Это приводит меня к вопросу:
Вопрос: Что такое правильный подход для разбора файла, что будет наиболее эффективным способом сделать это и будет организовывать данные по-разному в .txt
прикрутить парсер? если да, то как мне организовать data
внутри file
?
У меня не может быть весь файл в основной памяти, поскольку он очень большой, не приведет ли это к основной памяти? –
да, это займет его в памяти. Насколько оно большое? Если вам действительно нужно, вы должны пойти в распределенные материалы, такие как RDD от Spark, но это займет некоторое время. Как насчет выборки данных? посмотрите на этот вопрос: http://stackoverflow.com/questions/22258491/read-a-small-random-sample-from-a-big-csv-file-into-a-python-data-frame, вы можете зацикливать над частями данных, чтобы не загружать все в память сразу. – lorenzori