Python与C的交互

  |  

摘要: 梳理 Python 与 C 的交互方法

【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:潮汐朝夕
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


用 Python 开发项目的好处是语法简单,很多东西已经封装好了,可以直接拿来用,比如实现同样一个功能,用 Python 比 C/C++ 的代码量少很多。但因为 Python 没有编译过程,直接逐行执行,慢很多,因此很多对速度要求很高的场合,需要用 C/C++ 来写。

更多时候,我们既想要 Python 的简洁,又不像损失太多的性能,例如性能和速度要求不高的地方用 Python 写,关键的运算部分用 C/C++ 写,这在科学计算或数据分析中是一个非常普遍的需求。这就需要 Python 与 C 的交互了。

要实现这种 Python 和 C 的交互,主要有三种方式:

  • Python 扩展:在 Python 程序中调用 C/C++ 编写的库
  • Python 嵌入:在 C/C++ 程序中调用 Python 程序
  • Python 调用:Python 和 C 间以程序级别互相调用

这里推荐一份参考文档:扩展和嵌入 Python 解释器

该文档描述了如何使用 C 或 C++ 编写模块以使用新模块来扩展 Python 解释器的功能。这些模块不仅可以定义新的函数,还可以定义新的对象类型及其方法。

该文档还描述了如何将 Python 解释器嵌入到另一个应用程序中,以用作扩展语言。

最后,它展示了如何编译和链接扩展模块,以便它们可以动态地(在运行时)加载到解释器中,如果底层操作系统支持此特性的话。

Python 扩展

Python 扩展是在 Python 程序中调用 C/C++ 编写的库。目的是提升关键代码的性能、引入 C 语言成熟的库。以 Python 为主程序,通过 .dll/.so 调用 C 语言的代码,主要的方法有:

Python 嵌入

Python 嵌入是指在 C/C++ 中调用 Python 程序。目的是引入 Python 中成熟的库。以 C/C++ 为主程序,用 Python API,通过源文件使用 Python 代码。

参考文章:将Python嵌入C++

Python 调用

Python 调用是指 Python 和 C 间以程序级别互相调用,目的是模块间功能共用。Python 和 C++ 都是主程序,通过子进程或线程的方式调用。


Share