Можно ли хранить эти регулярные выражения в кэше на диске предварительно скомпилированным образом, чтобы избежать необходимости выполнять регулярные выражения при каждом импорте?
Не легко. Вам нужно написать собственный сериализатор, который подключается к реализации C sre
движка регулярных выражений Python. Любые преимущества в производительности будут значительно перевешены затратами времени и усилий.
Во-первых, вы действительно профилировали код? Я сомневаюсь, что компиляция регулярных выражений является важной частью времени выполнения приложения. Помните, что они компилируются только при первом импорте модуля в текущем исполнении - после этого модуль и его атрибуты кэшируются в памяти.
Если у вас есть программа, которая в основном порождается один раз, компилирует кучу регулярных выражений, а затем завершает работу, вы можете попробовать перепроектировать ее для выполнения нескольких тестов за один вызов. Затем вы можете повторно использовать регулярные выражения, как указано выше.
Наконец, вы можете скомпилировать регулярные выражения в конечные автоматы на основе Си, а затем связать их с модулем расширения. Хотя это, вероятно, будет сложнее поддерживать, это полностью исключит компиляцию регулярных выражений из вашего приложения.