python和c++的区别.pyc_python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )...

目前有很多开源的python/c++ 绑定工具,搜了好多岾子,这里稍微总结下。

SWIG

支持 Python 2 and 3

配置正确的话,可以全自动完成封装(*.i文件需要自己写)

当不是全自动的时候,它大多会重复你的.h文件并给出提示

除了Python外,还支持其他语言(Java, Ruby, Lua, 等)

输出一个本地文件(这个文件会被编译成.pyd)和一个封装(这个封装是python脚本,调用对应生成的.pyd)

绑定(Bindings)的性能不是太好,不支持内部类(inner classes)的封装

不支持属性(通过getter/setters访问values)

文档很全,很容易学习

google使用了

C++支持不太好

Boost::Python

支持 Python 2, 3和C++的绑定

对于新手来说,学习它的语法有一定难度。但是这些语法很直观

大量使用了 C++ templates (可能是好事,也可能是坏事),会很明显地提高编译时间

随boost库一起发布,且boost库有用,但很大

刚开始编译使用boost.python封装好的C++代码时,出现的各种错误

一些语法不易学习,像函数返回值时的规则

非常可靠、稳定、经过充分测试的库(boost库里的部件都具有这特性)

不支持属性

支持文档写得比较差,有些功能文档里甚至都没有写。

编译后的pyd文件有些大,这不利于在手机或者嵌入平台使用

配合py++使用,几乎可以全自动封装项目

Py++

支持 Python 2, 3 和C++的绑定

它调用boost.python自动完成项目绑定,相当于boost.python的高级工具

PyCxx

支持 Python 2, 3 和C++的绑定

轻量级的封装库,用的人挺多

只支持C++

目前没有自动绑定工具

Python C api(Python 的帮助文档里有)

性能高

灵活

适合嵌入式

C++支持差

复杂

ctypes(Python自带的库)

灵活

对c的代码几乎无缝调用

使用起来比较繁琐

只支持c语言

SIP

支持 Python 2, 3 和C++的绑定

在PyQt中使用过,其他地方很少见它

Weave

性能高

很少见

Pyrex

很少见

目前还没有成熟的项目

性能较高

接近于Python语法

Cython

基于Pyrex,很多外部库的扩展用它写的

参考:http://stackoverflow.com/questions/1492755/python-c-binding-library-comparison

http://web.archive.org/web/20090604182721/http://www.suttoncourtenay.org.uk/duncan/accu/integratingpython.html

https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值