Предположим, я пишу расширение CPython C, и внутри него я хочу вызвать некоторую функцию, написанную на Python.
Inte rnet предполагает, что он включает вызов PyObject *PyObject_Call()
из расширения C. Это так?
Если это так, я бы хотел понять механизм, задействованный внутри ВМ, для вызова вызываемой функции Python. Я потратил время на просмотр исходного кода PyObject *PyObject_Call()
, но не смог полностью понять, что происходит, поэтому руководство будет оценено.
Что из перечисленного верно?
ВМ выдвигает новый кадр стека и т. Д. c. - но затем ждет следующего eval l oop итерации , чтобы естественным образом переключить управление на вызываемую Python функцию
ВМ вызывает new интерпретация байт-кода l oop для немедленной интерпретации вызываемой функции
Что-то еще?