LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 154|回复: 0

突破高层次嵌入的限制:概述

[复制链接]
发表于 2024-1-21 00:03:50 | 显示全部楼层 |阅读模式

高级接口能从应用程序中执行任何 Python 代码,但至少交换数据可说是相当麻烦的。如若需要交换数据,应使用较低级别的调用。几乎可以实现任何功能,代价是得写更多的 C 代码。
应该注意,尽管意图不同,但扩展 Python 和嵌入 Python 的过程相当类似。前几章中讨论的大多数主题依然有效。为了说明这一点,不妨来看一下从 Python 到 C 的扩展代码到底做了什么:
  • 将 Python 的数据转换为 C 格式,
  • 用转换后的数据执行 C 程序的函数调用,
  • 将调用返回的数据从 C 转换为 Python 格式。

嵌入 Python 时,接口代码会这样做:
  • 将 C 数据转换为 Python 格式,
  • 用转换后的数据执行对 Python 接口的函数调用,
  • 将调用返回的数据从 Python 转换为 C 格式。

可见只是数据转换的步骤交换了一下顺序,以顺应跨语言的传输方向。唯一的区别是在两次数据转换之间调用的函数不同。在执行扩展时,调用一个 C 函数,而执行嵌入时调用的是个 Python 函数。
本文不会讨论如何将数据从 Python 转换到 C 去,反之亦然。另外还假定读者能够正确使用引用并处理错误。由于这些地方与解释器的扩展没有区别,请参考前面的章节以获得所需的信息。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表