在CPython中,生成器和协程是如何实现的?

9 浏览
0 Comments

在CPython中,生成器和协程是如何实现的?

据我所知,在CPython中,解释器栈(即调用以达到此点的Python函数列表)与C栈(即在解释器自己的代码中调用的C函数列表)混合在一起。如果是这样,那么生成器和协程是如何实现的?它们如何记住它们的执行状态?CPython是否会将每个生成器/协程的栈复制到操作系统的栈中,并在需要时进行相互转换?还是CPython简单地将生成器的最上层栈帧保留在堆上,因为生成器只能从该最上层栈帧中进行yield操作?

0