大量の静的正規表現を含むPythonファイルがインポートされるたびに、CPUサイクルは、メモリ内の代表的なステートマシンに文字列をコンパイルするために費やされます。
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