Python呼叫C 的幾種方法

2021-09-20 03:21:01 字數 1195 閱讀 7637

參考:

參考:前言

caffe2用python來構造tensor, blob,op,workspace等,生成protobuf,傳給後面的c++執行。那執行的整個過程,個人就有點好奇了。本文為僅為python呼叫c++的幾種方法,不涉及任何caffe2的執行機制。

大家都知道python的優點是開發效率高,使用方便,c++則是執行效率高,這兩者可以相輔相成,不管是在python專案中嵌入c++**,或是在c++專案中用python實現外圍功能,都可能遇到python呼叫c++模組的需求,下面列舉出集中c++**匯出成python介面的幾種基本方法。

1、原生態匯入

python直譯器就是用c實現,因此只要我們的c++的資料結構能讓python認識,理論上就是可以被直接呼叫的。我們實現test1.cpp如下

#include int add(int x, int y)

int x, y;

if(!pyarg_parsetuple(args, "ii", &x, &y))

return py_buildvalue("i", add(x, y));

} int x, y;

if(!pyarg_parsetuple(args, "ii", &x, &y))

return py_buildvalue("i", del(x, y));

}static pymethoddef test_methods=

};extern "c"

void inittest1()

編譯命令如下

g++ -fpic -shared test1.cpp -o test1.so -i/usr/include/python2.7
其中:

-fpic: 生成位置無關目標**,適用於動態連線;

-l path:表示在path目錄中搜尋庫檔案;

-i path:表示在path目錄中搜尋標頭檔案;

-o file:指定輸出檔案為file

-shared: 生成乙個共享庫檔案

執行python直譯器,測試如下:

>>> import test1

>>> test1.add(1, 2)

3

note that:

Python呼叫C 程式的幾種方法

大家都知道python的優點是開發效率高,使用方便,c 則是執行效率高,這兩者可以相輔相成,不管是在python專案中嵌入c 或是在c 專案中用python實現外圍功能,都可能遇到python呼叫c 模組的需求,下面列舉出集中c 匯出成python介面的幾種基本方法,一起來學習學習吧。python直...

Python呼叫C 程式的幾種方法

大家都知道python的優點是開發效率高,使用方便,c 則是執行效率高,這兩者可以相輔相成,不管是在python專案中嵌入c 或是在c 專案中用python實現外圍功能,都可能遇到python呼叫c 模組的需求,下面列舉出集中c 匯出成python介面的幾種基本方法,一起來學習學習吧。python直...

Python呼叫命令列的幾種方法

接收字串形式的系統命令並執行它。當執行命令時,python的執行是掛起的。當我們執行完成之後,將會以system 的返回值形式給出退出狀態,python的執行就會繼續。退出狀態,0表示成功,非0表示其他型別的錯誤。所以,這個函式是無法直接獲取輸出的。它的工作方式和os.system 是一樣的,但是它...