В настоящее время я пишу скрипт на Python для обработки около 10000 входных документов.Основываясь на результатах выполнения скрипта, я заметил, что первые 400+ документов обрабатываются очень быстро, а затем скрипт замедляется, хотя все входные документы имеют примерно одинаковый размер.
Я предполагаю, что это может быть связано стот факт, что большая часть обработки документов выполняется с помощью регулярных выражений, которые я не сохраняю как объекты регулярных выражений после их компиляции.Вместо этого я перекомпилирую регулярные выражения всякий раз, когда они мне нужны.
Поскольку мой сценарий имеет около 10 различных функций, каждая из которых использует около 10–20 различных шаблонов регулярных выражений, я задаюсь вопросом, что было бы более эффективным способом избежать в Pythonперекомпилировать шаблоны регулярных выражений снова и снова (в Perl я мог бы просто включить модификатор //o
).
Я предполагаю, что если я сохраню объекты регулярных выражений в отдельных функциях, используя
pattern = re.compile()
результирующий объект регулярного выражения не будет сохранен до следующего вызова функции для следующей итерации (каждая функция вызывается, но один раз для каждого документа).
Кажется, что создание глобального списка предварительно скомпилированных регулярных выраженийнепривлекательный вариант, так как мне нужно было бы хранить список регулярных выражений в другом месте моего кода, отличном от того места, где они фактически используются.
Есть ли здесь какой-нибудь совет относительно того, как аккуратно и эффективно справиться с этим?