Python C C++如何联合编程

严肃点

Python、C语言、C++联合编程,可以发挥出C、C++的性能和Python的便利,我相信这是很多人一直想要的功能。但是网络上一直没有几个课程来讲述这个问题,所以我做了几个视频,系统谈谈自己在联合编程实践中遇到的坑,抛砖引玉

真实点

C语言、C++太难用了,要是一直能用Python该多好了,无奈自己的身处工业制造行业,很多工具仅仅提供C、C++的SDK,其余的编程语言一律不提供。完全用C、C++开发,开发速度较慢,自身能力不太行、领导容易不满,再加上人手不够,时间节点不能总是卡在我这里吧。万般无奈,思前想后的解决方式是对仅提供C、C++的SDK封装一层后,交由Python调用,大部分的业务逻辑还是Python来完成。这样做后,可以大大缩短工期,你好,我好,大家好。

没有对比就没有选择困难

在努力寻找联合编程的教程后,发现网络上的文章很杂很乱,又很少,捋不清头绪。不知道你是不是和像我一样,找教程而不得。如果有,我下面的文字,一定会对你有所帮助。

先来一份自己的总结表格,梳理网上常见的解决方案:

https://study.163.com/instructor/1019375530.htm

结论:

  • 如果仅仅用C语言,那么用Python自带的ctypes库就蛮好用的;
  • 如果需要用C++,那么用boost-python和pybind11都可以;
  • 如果你是图像处理从业者,那么直接用opencv,就可以完成Python和C++的交互。

课程在哪里

ctypes

课程链接:Python ctypes和C语言交互
网易云课堂搜索:ctypes
https://study.163.com/course/courseMain.htm?share=2&shareId=480000002243495&courseId=1211147802

boost

课程链接:boost python和C++交互
网易云课堂搜索:boost

opencv

课程链接:编译自己的opencv-python
网易云课堂搜索:opencv-python

常见问题

  • pybind11是现代的C++,boost-python历史包袱太重,选择哪一个?
    我目前用的是boost-python,很重要原因是自带的boost-numpy库,可以很方便的和Python numpy进行交互,帮助文档也较全。写Python的,对numpy库肯定不陌生,它太重要了。
    boost被人诟病的一点就是编译太复杂,容易出错,我将在课程中论述其中的注意事项,我相信你学完后,会觉得编译其实很简单。

  • 为什么opencv这个图像库也入选了?
    opencv对于Python的封装,本来就是基于numpy,而且官方的源码也清楚明白,如果你经常使用opencv库,直接看这个课程,肯定可以拓展你的技能树。

posted @ 2021-01-18 15:59  duohappy  阅读(864)  评论(0编辑  收藏  举报