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庫,直接看這個課程,肯定可以拓展你的技能樹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM