Название говорит все. Есть ли способ, чтобы сериализовать функцию, порожденную sympy.lambdify ?:Как сериализовать функцию sympy lambdified?
import sympy as sym
import pickle
import dill
a, b = sym.symbols("a, b")
expr = sym.sin(a) + sym.cos(b)
lambdified_expr = sym.lambdify((a, b), expr, modules="numpy")
pickle.dumps(lambdified_expr) # won't work
dill.dumps(lambdified_expr) # won't work either
... Поэтому я хочу сделать это, потому что мой код генерирует столько lambdified функций, но я нашел, что это занимает слишком много времени каждый раз, когда ,
Почему recurse = True не является вариантом по умолчанию? – denfromufa
Поскольку 'dill' может сериализовать широкий диапазон объектов, а' recurse = False' обеспечивает самый широкий диапазон охвата. Если вы используете 'recurse = True', он отлично работает для определенных объектов, но прерывает сериализацию для ряда случаев. Если (или когда) я разрешаю случаи, которые он ломает, тогда он станет стандартным. До тех пор наилучшим выбором является * не * удаление функций по умолчанию, но предоставление новых функций с помощью настройки. См .: https://github.com/uqfoundation/dill/issues/105 –
@MikeMcKerns У меня есть одно предостережение, поскольку для достаточно больших lambadified функций я получаю 'RuntimeError: максимальная глубина рекурсии превышена при вызове объекта Python'. –