gpt4 book ai didi

python - 切换进出 PyFrameObjects 可以很好地实现延续吗?

转载 作者:太空狗 更新时间:2023-10-30 00:17:19 24 4
gpt4 key购买 nike

我对 continuations 感兴趣,特别是在 Python 的 C-API 中。据我了解,延续的性质需要取消抽象的低级调用约定,以便根据需要操纵调用堆栈。我很幸运地遇到了这些分散的几个例子herethere .在我遇到的几个例子中,这种非抽象是使用聪明的 C(带有关于环境的假设)或自定义程序集完成的。

但是,Python 的优点在于它有自己的由 PyFrameObject 组成的解释器堆栈。假设现在是单线程应用程序,难道仅仅切换进出 PyFrameObjects 以在 Python 的 C-API 中实现延续就足够了吗?为什么这些作者还要为底层的东西烦恼?

最佳答案

生成器通过操作框架对象的堆栈(实际上是链表)来工作。但这只会对纯 Python 代码有帮助。如果您的代码运行任何 C 代码,它不会帮助您。例如,如果您在 I/O 例程内的 C 代码中,则无法更改 Python 框架对象以使执行转到其他地方。为此,您必须能够更改 C 堆栈。这就是像 greenlets 这样的包为你做的。

关于python - 切换进出 PyFrameObjects 可以很好地实现延续吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com