2017-04-05 13 views
0

次の例ピクルスとsympy式の評価

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

過程で評価を回避する方法があるので、私は、sympy式の酸洗/ unpickle化がinital表現を返さないかもしれないという問題を抱えています?

動機は、プロセスで変更されていない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))