Как мне прочитать несколько строк в файле быстрее, используя python? - PullRequest
3 голосов
/ 04 февраля 2011

На данный момент я использую следующий код Python:

file = open(filePath, "r")
lines=file.readlines()
file.close()

Скажем, мой файл состоит из нескольких строк (10000 или более), тогда моя программа замедляется, если я делаю это для более чем одного файла.Есть ли способ ускорить это в Python?Читая различные ссылки, я понимаю, что readlines хранит строки файла в памяти, поэтому код работает медленно.

Я также пробовал следующий код, и выигрыш во времени составляет 17%.

lines=[line for line in open(filePath,"r")]

Есть ли какой-нибудь другой модуль в python2.4 (который я мог бы пропустить).Спасибо, Сандхья

1 Ответ

6 голосов
/ 04 февраля 2011
for line in file:

Это дает вам итератор, который читает объект файла по одной строке за раз, а затем отбрасывает предыдущую строку из памяти.

Файловый объект является собственным итератором, например, iter (f) возвращает f (если f не закрыт). Когда файл используется в качестве итератора, обычно в цикле for (например, для строки в f: print line), метод next () вызывается повторно. Этот метод возвращает следующую строку ввода или вызывает StopIteration при нажатии EOF. Чтобы сделать цикл for наиболее эффективным способом зацикливания строк файла (очень распространенная операция), метод next () использует скрытый буфер опережающего чтения. В результате использования буфера упреждающего чтения объединение next () с другими файловыми методами (например, readline ()) работает неправильно. Однако использование seek () для позиционирования файла в абсолютную позицию очистит буфер опережающего чтения. Новое в версии 2.3.

Краткий ответ: не назначайте строки переменной, просто выполняйте все необходимые операции внутри цикла.

...