2013-06-01 87 views
0

比方說,我運行一個Python程序,並在執行該程序時得到一個特定的點。我希望能夠將這個狀態的「快照」能夠在未來的某個點上運行。快照Python進程並在稍後進行恢復

如:

  • 我跑test1.py肚裏有關創建對象,會話等,命中斷點-1。
  • 我拍攝了Python進程的「快照」,然後繼續執行程序。
  • 在稍後階段,我希望能夠從「快照」中恢復並從斷點1開始執行程序。

爲什麼我要這個?要重複執行一個特定的任務,如果開始非常平凡,只有結束纔有意思,那麼我不想浪費時間來運行第一部分。

任何建議,或指示我如何做到這一點,或我應該看什麼工具?

+0

像調試? – fvrghl

+2

或者像pickle這樣的持久數據存儲來保存中間值? –

+0

我建議傳遞一個命令行參數來告訴它是否跳過最初的東西。除非你真的真的需要一個通用的解決方案,然後看看泡菜 – ahuff44

回答

0

這聽起來像是你需要一些持久性記憶。這是初級的,但可能讓你開始:

import shelve 

class MemoizedProcessor(object): 
    def __init__(self): 
    # writeback only if it can't be assured that you'll close this shelf. 
    self.preprocessed = shelve.open('preprocessed.cache', writeback = True) 
    if 'inputargs' not in self.preprocessed: 
     self.preprocessed['inputargs'] = dict() 

    def __del__(self, *args): 
    self.preprocessed.close() 

    def process(self, *args): 
    if args not in self.preprocessed['inputargs']: 
     self._process(*args) 
    return self.preprocessed['inputargs'][args] 

    def _process(self, *args): 
    # Something that actually does heavy work here. 
    result = args[0] ** args[0] 
    self.preprocessed['inputargs'][args] = result 
相關問題