快照Python进程并在以后从中进行还原

时间:2013-06-01 00:47:49

标签: python

假设我运行一个Python程序,它在执行它时会遇到一个特定的问题。我希望能够对此状态进行“快照”,以便能够在将来运行它。

例如:

  • 我运行test1.py来创建对象,会话等,然后点击breakpoint-1。
  • 我拍摄了Python过程的“快照”,然后继续该程序。
  • 在稍后阶段,我希望能够从“快照”恢复并从断点-1开始执行程序。

为什么我要这个?要重复执行一个特定的任务,如果开始是非常平凡的,只有结局很有意思,那么我不想每次都浪费时间运行第一部分。

有任何建议,或指示我如何做到这一点,或者我应该看哪些工具?

1 个答案:

答案 0 :(得分: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