给定一个大型(4.5 GB代码库) python测试框架,它的执行涉及数十个文件,其中许多文件不能直接pickle,是否可以将程序的初始执行包装在一行函数中,在该函数周围创建Stackless微线程,并在执行过程中,将该微线程作为保存整个程序状态的一种方式?Stackless的微线程酸洗功能的限制是什么?
发布于 2013-06-26 14:22:10
这确实是Stackless Pickling提供的一种可能性
Stackless的主要特性之一是它能够对微线程进行筛选和取消筛选。这意味着在微线程中运行的程序可以持久地存储到文件或字符串中。稍后,它可以再次恢复,并可以在先前停止的点继续运行。这不需要在同一台机器上!:
因此,对于我们的问题“有没有可能”,答案是“有”。
至于“怎么做”的问题,我认为上面的链接提供了一个具体的例子。试一试,如果它不起作用,可以发布另一个问题。考虑到你的代码库的大小(4.5 is的Python源文件是相当大的!),也许你会达到Stackless的极限?
发布于 2013-06-27 17:44:39
更具体地说: Stackless向许多内置元素添加了酸洗支持,例如执行框架和模块以及其他运行时对象。然而,代码,例如类、函数和模块,都是按名称进行酸洗的。这意味着在另一台机器上,必须可以通过导入机制访问相同的对象。
换句话说,pickled执行状态将包含当前的局部变量和所有这些,但是代码对象或模块的内容将不会被picled。当状态为未酸洗时,需要按名称访问这些属性。
https://stackoverflow.com/questions/17312282
复制相似问题