2017-04-05 157 views
0

我有问题,即酸洗/ sympy表达式在unpickle可能不会返回inital表达,如在下面的例子中味酸和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对象,而不会在过程中对它们进行更改。

+0

这听起来像在'评估(错误)'上下文unpickling可能会有所帮助。尽管如此,我还没有尝试过,我不知道是否应该按照默认方式使用unpickling。 – user2357112

+0

确实如此,谢谢!在django上下文中,这意味着在'evaluate(False)'上下文中从'request.session'中检索值。 – esandier

+0

听起来好像有不同的线程试图进入和离开相互冲突的'evaluate(False)'上下文有线程安全问题。 – user2357112

回答

0

user2357112发表评论回答问题。

>>>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))