參考:
參考:前言
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 是一樣的,但是它...