23
|
ConcernedOfTunbridgeWells · 技术社区 · 16 年前 |
![]() |
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 在实践中,我会构建您的工作流引擎,以便您的脚本将动作对象提交给管理器。经理可以在任何时候对这一系列行动进行梳理,并允许 加载它们并再次开始执行(通过恢复提交操作)。 换句话说:创建自己的应用程序级堆栈。 |
![]() |
3
3
如果你不介意完全转向另一个python发行版,那么无堆栈python可能是最好的。
迪尔把它的类型登记到
这是
您还问它在哪里用于保存解释器状态?
IPython
可以使用
klepto
用途
mystic
用途
还有其他几个包使用
|
![]() |
4
2
您可以通过抛出异常并在回溯中后退一帧来获取现有的堆栈帧。问题是没有提供在代码块的中间(frame.f_tlasti)恢复执行的方法。 可恢复异常是一个非常有趣的语言概念,尽管很难想出一种合理的方式,让它们与Python现有的try/finally和块进行交互。 目前,正常的做法是简单地使用线程在控制器的单独上下文中运行工作流。(或者协程/greenlets,如果你不介意的话)。 |
![]() |
5
2
使用标准CPython时,由于堆栈中C和Python数据的混合,这很复杂。重建调用堆栈需要同时重建C堆栈。这真的把它放在了一个太硬的篮子里,因为它可能会将实现与特定版本的CPython紧密结合。 无堆栈Python允许对小任务进行酸洗,这提供了开箱即用所需的大部分功能。 |
![]() |
6
1
我也有同样的问题要解决。我想知道最初的海报决定做什么。 stackless声称,只要没有相关的“阻塞”C堆栈(阻塞是我的措辞选择),它就可以阻塞小任务。 我可能会使用eventlet并找出一些清理“状态”的方法,但我真的不想写一个显式的状态机。。 |