使用Stackless Python来保存大型运行程序的状态?

时间:2013-06-26 05:37:44

标签: python state python-stackless stackless

鉴于一个庞大的(4.5 GB代码库)python测试框架,其执行涉及数十个文件,其中许多文件不能直接发送,是否可以将程序的初始执行包装在一行函数中,创建一个围绕该函数的无堆栈tasklet,并且在执行期间,挑选tasklet作为一种保存整个程序状态的方法? Stackless'tasklet酸洗功能的限制是什么?

2 个答案:

答案 0 :(得分:2)

这确实是Stackless Pickling

提供的可能性
  

Stackless的一个主要功能是它能够挑选和取消任务。这意味着可以将tasklet中运行的程序持久存储到文件或字符串中。之后,它可以再次恢复,并可以继续在先前停止的位置运行。这不需要在同一台机器上!:

所以对我们的问题“是否有可能”答案是肯定的。

作为“如何做”的问题,我认为上面的链接提供了一个具体的例子。如果它不起作用,请尝试并发布其他问题。鉴于你的代码库的大小(4.5GB的Python 文件相当庞大!),也许你会达到Stackless的极限?

答案 1 :(得分:2)

更具体: Stackless为许多内置元素添加了酸洗支持,例如执行框架和模块以及其他运行时对象 但是,代码(例如类,函数和模块)都是按名称进行选择的。这意味着在另一台机器上,必须通过导入机制访问相同的对象 换句话说,pickle执行状态将包含当前的局部变量以及所有这些,但代码对象或模块的内容将不会被图像化。当状态为unpickled时,这些需要通过名称访问。