2017-04-05 154 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))