Я выполняю тесты производительности для нескольких приложений Java. Приложения создают очень большие лог-файлы (могут достигать 7-10 ГБ) во время теста. Мне нужно обрезать эти файлы журналов между определенными датами и временем. в настоящее время я использую скрипт python, который анализирует метки времени журнала в объекте python datetime и печатает только совпадающие строки. Но это решение очень медленное. Журнал размером 5 ГБ анализируется около 25 минут. Очевидно, что записи в файле журнала идут последовательно, и мне не нужно читать весь файл построчно. Я думал о чтении файла с начала и с конца, пока не будет выполнено условие, и печатать файлы между совпадающим количеством строк. Но я не знаю, как я могу прочитать файл с обратной стороны, не загружая его в память.
Пожалуйста, не могли бы вы предложить мне какое-либо подходящее решение для этого случая.
вот часть скрипта Python:
lfmt = '%Y-%m-%d %H:%M:%S'
file = open(filename, 'rU')
normal_line = ''
for line in file:
if line[0] == '[':
ltimestamp = datetime.strptime(line[1:20], lfmt)
if ltimestamp >= str and ltimestamp <= end:
normal_line = 'True'
else:
normal_line = ''
if normal_line:
print line,