Cada vez que se importa un archivo python que contiene una gran cantidad de expresiones regulares estáticas, los ciclos de CPU se pasan compilando las cadenas en sus máquinas de estado representativas en la memoria.Almacenamiento en memoria caché de objetos regex compilados en Python?
a = re.compile("a.*b")
b = re.compile("c.*d")
...
Pregunta: ¿Es posible almacenar estas expresiones regulares en una memoria caché en el disco de una manera pre-compilados para evitar tener que ejecutar las compilaciones de expresiones regulares en cada importación?
Decapado el objeto simplemente hace lo siguiente, causando la compilación a suceder de todos modos:
>>> import pickle
>>> import re
>>> x = re.compile(".*")
>>> pickle.dumps(x)
"cre\n_compile\np0\n(S'.*'\np1\nI0\ntp2\nRp3\n."
Y re
objetos son unmarshallable:
>>> import marshal
>>> import re
>>> x = re.compile(".*")
>>> marshal.dumps(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unmarshallable object
Tristemente, mi aplicación (900 expresiones regulares y conteo) también tiene este problema. desafortunadamente, no veo ninguna solución en este hilo. –