2013-06-26 11 views
2

Python 테스팅 프레임 워크가 4.5 GB (4.5 GB)이기 때문에 다수의 파일이 수십 개의 파일로 이루어져 있고 그 중 많은 수가 직접 피클러가 될 수없는 경우 한 줄 함수로 프로그램의 초기 실행을 래핑하고 스택리스 태스크 릿 (tasklet)을 실행하고, 실행 중에 전체 프로그램의 상태를 저장하는 방법으로 태스크 릿을 pickle합니까? Stackless 'tasklet 피클 링 기능의 한계는 무엇입니까?스택이없는 Python을 사용하여 대규모 실행 프로그램의 상태를 저장 하시겠습니까?

답변

2

이 실제로 스택리스의 주요 기능 Stackless Pickling

하나에 의해 제공되는 가능성이 자사의 피클 능력과 unpickle 태스크 릿입니다. 즉, 태스크 릿 안에있는 실행중인 프로그램을 파일이나 문자열에 지속적으로 저장할 수 있습니다. 나중에 다시 복원 할 수 있으며 이전에 중단 된 지점에서 계속 실행할 수 있습니다. 동일한 기계에있을 필요는 없습니다! :

"그렇습니다"대답은 "예"입니다.

"어떻게해야합니까?"위의 링크는 구체적인 예를 제공한다고 생각합니다. 그것을 시도하고 작동하지 않는 경우 다른 질문을 게시하십시오. 코드베이스의 크기 (파이썬 소스 파일의 4.5GB가 상당히 큽니다!)를 감안할 때 아마도 Stackless의 한계에 도달 할 것입니까?

2

구체적으로 : 스택리스 (stackless)는 실행 프레임, 모듈 및 다른 런타임 오브젝트와 같은 많은 내장 요소에 산세 지원을 추가합니다. 그러나 클래스, 함수 및 모듈과 같은 코드는 모두 이름으로 절인됩니다 . 이것이 의미하는 바는 다른 컴퓨터에서 동일한 개체가 가져 오기 메커니즘을 통해 액세스 가능해야한다는 것입니다.
다른 말로하면, pickle 된 실행 상태에는 현재 로컬 변수와 그 모든 것이 포함되지만 코드 객체의 내용이나 모듈은 picled되지 않습니다. 상태가 unpickle되었을 때 이름으로 액세스 할 수 있어야합니다.