2017-04-05 1 views
0

나는 과정에서 평가를 피할 수있는 방법이 있나요 산세가/sympy 표현의 unpickling는 다음과 같은 예를피클과 sympy 식의 평가는

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

에서와 같이 inital 표현을 반환하지 않을 수 있다는 문제가있다 ?

동기 부여는 프로세스에서 변경되지 않은 상태에서 장고의 request.session 객체에 sympy 표현식을 추가해야한다는 동기입니다.

+0

'평가 (거짓)'컨텍스트에서 unpickling이 도움이 될 것 같습니다. 나는 그것을 시도하지 않았으며, unpickling이 기본적으로 이런 식으로 행동해야하는지 여부를 알지 못합니다. – user2357112

+0

실제로 작동합니다. 감사합니다! 장고 문맥에서 이것은'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))