2

给定一个大型(4.5 GB 代码库)python 测试框架,其执行涉及数十个文件,其中许多文件不能直接腌制,是否可以将程序的初始执行包装在一行函数中,创建一个 Stackless tasklet那个函数,并且在执行过程中,pickle tasklet 作为保存整个程序状态的一种方式?Stackless 的 tasklet 酸洗能力有什么限制?

4

2 回答 2

2

这确实是Stackless Pickling提供的一种可能性

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

所以对于我们的问题“是否可能”,答案是“是”。

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

于 2013-06-26T06:22:10.080 回答
2

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

于 2013-06-27T09:44:39.460 回答