Каждый раз, когда импортируется файл python, содержащий большое количество статических регулярных выражений, циклы ЦП тратятся на компиляцию строк в соответствующие конечные автоматы в памяти.
a = re.compile("a.*b")
b = re.compile("c.*d")
...
Вопрос: Можно ли хранить эти регулярные выражения в кэше на диске в предварительно скомпилированном виде, чтобы не выполнять компиляцию регулярных выражений при каждом импорте?
Пикировка объекта просто делает следующее, вызывая компиляцию в любом случае:
>>> import pickle
>>> import re
>>> x = re.compile(".*")
>>> pickle.dumps(x)
"cre\n_compile\np0\n(S'.*'\np1\nI0\ntp2\nRp3\n."
И re объекты не подлежат маршаллингу:
>>> import marshal
>>> import re
>>> x = re.compile(".*")
>>> marshal.dumps(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unmarshallable object