【发布时间】:2017-04-05 19:36:21
【问题描述】:
我的问题是 sympy 表达式的酸洗/取消酸洗可能不会返回初始表达式,如下例所示
>>>with evaluate(False) : x = atan(sqrt(3))
>>>x
atan(sqrt(3))
>>> y = pickle.dumps(x)
>>> z = pickle.loads(y)
>>> z
pi/3
有没有办法避免过程中的评估?
动机是我需要将 sympy 表达式添加到 Django 中的 request.session 对象,而不会在此过程中对其进行更改。
【问题讨论】:
-
这听起来像是在
evaluate(False)上下文中解封可能会有所帮助。不过,我还没有尝试过,我不知道 unpickling 是否应该默认以这种方式运行。 -
确实有效,谢谢!在 django 上下文中,这意味着在
evaluate(False)上下文中从request.session检索值。 -
听起来可能存在线程安全问题,不同线程试图进入和离开
evaluate(False)上下文相互冲突。
标签: python django pickle sympy