задача: Чтение массивных файлов .csv (до 1 миллиона рядов, 200 столбцов) в Python 2.7. Ошибки памяти. Однако этот метод становится непрактичным для больших файлов, поскольку он потребляет чрезмерную память. Процесс строк по мере их создания:
Избегайте загрузки всего файла в память. Вместо этого обрабатывает строки по мере их сгенерирования с использованием функции генератора. с Open (имя файла, «rb») как csvfile: dataReader = csv.reader (csvfile) Получите следующий (DataReader) # Получить строку заголовка Для строки в DataReader: Если строка [3] == Критерий: Учитывать ряд
2. Используйте функции генератора для фильтрации:
фильтра данных при обращении через файл с использованием функций генератора. Этот подход позволяет соответствовать нескольким последовательным строкам, отвечающим конкретному критерию. с Open (имя файла, «rb») как csvfile: dataReader = csv.reader (csvfile) Получите следующий (DataReader) # Получить строку заголовка урожай от дубля ( Lambda R: R [3] == Критерий, Dropwhile (Lambda R: R [3]! = Критерий, DataReader)) return
3. Оптимизируйте потребление памяти:
]def getstuff(filename, criterion): with open(filename, "rb") as csvfile: datareader = csv.reader(csvfile) yield next(datareader) # yield the header row for row in datareader: if row[3] == criterion: yield rowRefactor getData () для использования функции генератора, гарантируя, что только одна строка хранится в памяти в любое время.
Дополнительные советы для скорости:
]
def getstuff(filename, criterion): with open(filename, "rb") as csvfile: datareader = csv.reader(csvfile) yield next(datareader) # yield the header row for row in datareader: if row[3] == criterion: yield row
Использовать CSV.Reader с параметрам размера чанка: читать файлы в меньших чанах, чтобы уменьшить FOMARINT. В базе данных для более быстрой и более эффективной обработки.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3