#python #pypy
#python #pypy
Вопрос:
При чтении текстового файла журнала (postfix logs) мне нужно проверить определенные шаблоны для разделения строки / разделения строки для сохранения значений атрибутов в каждой строке текстового файла журнала. Следовательно, используйте метод регулярного выражения ‘re.search’ следующим образом:
if (re.search(' msn$', line)):
line2 = line.partition('...')[2].split('n')[0]
break
Эквивалентен ли этот код:
if ' msn' in line:
line2 = line.partition('...')[2].split('n')[0]
break
Улучшит ли последний код скорость выполнения кода python?
Как можно улучшить обработку файла, если необходимо выполнить множество таких поисков по шаблону, а значения обновляются в таблице postgres каждый день с повышенной скоростью. Каждый день у нас есть около 300000 записей для хранения, грубо говоря, для чтения текстового файла размером 1474175681 байт каждый день. В настоящее время это занимает 100% процессора и тоже не быстро. Как я могу оптимизировать код? Большая часть кода просто проверяет определенные ключевые слова в строке файла и обрабатывает аналогично приведенному выше коду.
Ответ №1:
Вы должны использовать line.endswith(' msn')
, который полностью эквивалентен re.search(' msn$', line)
и намного быстрее.
Ответ №2:
Самый быстрый код — это код, который вы не выполняете. Переосмыслите рабочий процесс проблемы и избегайте извлечения текста из базы данных только для его обработки в python.