【发布时间】:2020-03-15 22:42:53
【问题描述】:
假设我正在编写一个 CPython C 扩展,并且我想在其中调用一些用 Python 编写的函数。
互联网表明它涉及从 C 扩展名调用 PyObject *PyObject_Call()。是这样吗?
如果是,我想了解 VM 内部调用被调用 Python 函数的机制。我花时间浏览了PyObject *PyObject_Call() 的源代码,但无法完全掌握其中的内容,敬请指教。
下列哪一项是正确的?
VM 推送一个新的堆栈帧等 - 但随后等待下一个 eval 循环迭代自然地将控制权切换到调用的 Python 函数
VM 调用一个新的字节码解释循环以便立即解释被调用的函数
还有别的吗?
【问题讨论】:
标签: python virtual-machine cpython