Python Pickle与sympy表达式的求值

Python Pickle与sympy表达式的求值,python,django,pickle,sympy,Python,Django,Pickle,Sympy,我的问题是,对sympy表达式的pickle/unpickle可能不会返回初始表达式,如下例所示 >>>with evaluate(False) : x = atan(sqrt(3)) >>>x atan(sqrt(3)) >>> y = pickle.dumps(x) >>> z = pickle.loads(y) >>> z pi/3 是否有办法避免在过程中进行评估 其动机是我需要向Django中的r

我的问题是,对sympy表达式的pickle/unpickle可能不会返回初始表达式,如下例所示

>>>with evaluate(False) : x = atan(sqrt(3))
>>>x
atan(sqrt(3))
>>> y = pickle.dumps(x)
>>> z = pickle.loads(y)
>>> z
pi/3
是否有办法避免在过程中进行评估

其动机是我需要向Django中的request.session对象添加symphy表达式,而不需要在过程中对其进行更改

下面的评论回答了这个问题

>>>with evaluate(False) : x = atan(sqrt(3))
>>>x
atan(sqrt(3))
>>> y = pickle.dumps(x)
>>> with evaluate(False) : z = pickle.loads(y)
>>> z
atan(sqrt(3))

听起来像是在
evaluate(False)
上下文中取消勾选可能会有所帮助。不过,我还没有尝试过,我也不知道默认情况下取消勾选是否应该以这种方式进行。它确实有效,谢谢!在django上下文中,这意味着从
evaluate(False)
上下文中的
request.session
中检索值。这听起来可能存在线程安全问题,因为不同的线程试图进入和离开彼此冲突的
evaluate(False)
上下文。