22
|
ConcernedOfTunbridgeWells · 技术社区 · 15 年前 |
1
10
标准python发行版中包含的expat python绑定正以编程方式构建堆栈帧。不过,需要注意的是,它依赖于未记录的和私有的API。 http://svn.python.org/view/python/trunk/Modules/pyexpat.c?rev=64048&view=auto |
2
7
你通常想要的是延续,我看到的已经是这个问题的标签了。 如果您能够处理系统中的所有代码,您可能需要尝试 这样做而不是处理解释器堆栈内部。我不确定这会有多容易被坚持。 http://www.ps.uni-sb.de/~duchier/python/continuations.html 在实践中,我将构建您的工作流引擎,以便您的脚本将操作对象提交给管理器。经理可以在任何时候pickle一组操作,并允许 它们将被加载并再次开始执行(通过恢复提交操作)。 换句话说:创建自己的应用程序级堆栈。 |
3
3
如果您不介意完全转到不同的python发行版,那么stackless python可能是最好的。
Dill把它的类型注册到
这里是
您还要求在哪里保存解释器状态?
IPython
可以使用
klepto
使用
mystic
使用
还有一些其他的包可以使用
|
4
2
您可以通过抛出一个异常并在跟踪中向后退一帧来获取现有的堆栈帧。问题是没有办法在代码块的中间(frame.f_lasti)恢复执行。 _可恢复的异常_是一个非常有趣的语言想法,尽管很难想到一种合理的方式,它们可以与Python现有的_ Try/Finally__和_____块进行交互。 目前,实现这一点的正常方法只是使用线程在其控制器的单独上下文中运行工作流。(或者,如果您不介意编译它们的话,可以使用coroutines/greenlets)。 |
5
2
对于标准的c python,这一点很复杂,因为堆栈中混合了C和python数据。重建调用堆栈需要同时重建C堆栈。这真的把它放在了一个过于困难的篮子里,因为它可能将实现与特定版本的cpython紧密地结合在一起。 Stacklesspython允许微线程被pickle,这提供了开箱即用所需的大部分功能。 |
6
1
我有同样类型的问题要解决。我想知道原来的海报是怎么决定的。 Stackless声称只要没有关联的“累赘的”C堆栈(累赘是我选择的措辞),它就可以腌制微线程。 我可能会使用eventlet并找出某种方式来处理“状态”,但我真的不想写一个显式的状态机。 |
pickle323 · C编程:现代方法-第10章项目6-困惑 6 年前 |
Gameatro · 为什么malloc在函数内部调用时返回空指针? 6 年前 |
E. Peracchia · F#函数调用工作不正常 6 年前 |
Jorge Zazueta · 汉诺塔C++的堆栈实现 6 年前 |
adamcasey · 缓冲区溢出“攻击”中的操作序列 6 年前 |