使用C或C ++扩展Python有什么好处?

时间:2013-09-02 16:27:36

标签: c++ python c

最近我读过我们可以编写C / C ++代码并从python调用那些模块,我知道C / C ++是快速且强类型的,但是如果我编写一些模块然后调用它,我会得到什么好处来自python?在什么情况下/方案/上下文中实现它会很好?

提前致谢。

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

  1. 如果您需要访问没有包装器的系统库 在python中(例如:Shapely包围了libgeos 几何计算),或者如果你正在写一个包装器 系统库。

  2. 如果您在功能中遇到性能瓶颈 需要更快地完成(并且可以从使用C中受益)。 就像查理所说的那样,剖析对于了解你是否至关重要 想要这样做或不做。

答案 2 :(得分:1)

描述您的申请。如果你真的花时间在几个地方,你可以在C中重新编码考虑这样做。除非分析告诉您确实需要,否则不要这样做。

答案 3 :(得分:1)

另一个原因是可能有一个C / C ++库,其功能在python中不可用。您可以在C / C ++中编写python扩展,以便可以访问/使用该C / C ++库。

答案 4 :(得分:0)

我看到的主要优势是速度。这是为Python等动态语言的通用性和灵活性付出的代价。该语言的执行模型与处理器的执行模型大不相同,因此在运行时必须存在转换层。

许多应用程序中有许多工作要素可以封装为强类型函数。 FFT,卷积,矩阵运算和其他类型的数组处理都是很好的例子,其中紧密编码的编译循环可以胜过纯Python解决方案,足以支付运行时数据复制和“环境切换”开销。

“C作为便携式汇编程序”也可以访问硬件功能以加速这些功能。 Python库可能有一个高级接口,它依赖于驱动程序代码,这些代码在Python执行模型中不够广泛。用于视频和音频处理的多媒体硬件以及CPU或GPU上的阵列处理指令就是例子。

定制混合解决方案的成本在于开发和维护。应用程序的设计,编码,构建,调试和部署增加了复杂性。您还需要有两种不同编程语言的员工专业知识。