最近用python版本的protocol buffer解碼數據。發現與C++版本相比,python版本的解碼速度慢很多,已經慢到了無法容忍的地步。因此,在github上查找解決方案。Github上有給出實驗,由python實現的protobuf API速度的確很慢(這裏是測試結果),但也給出了python調用C++庫的解決辦法。linux的安裝步驟很簡單,但卻沒給出windows的安裝步驟。因此,我在windows下安裝成功後,作如下記錄。
一、環境準備
Windows10、Cmake、VS2017、Anaconda配置的python環境
二、步驟
1、下載protobuf python版本的壓縮包
此處下載的版本是protobuf-python-3.11.2.zip
2、Cmake配置工程
(1)設置cmake目錄和build目錄
(2)選擇編譯器:Visual Studio 15 2017 -> x64 -> 點擊Finish
(3)點擊按鍵Configure -> 修改install路徑 -> Generate (注:此處我覺得BUILD_TESTS沒必要,就不勾選了)
二、使用VS2017編譯protobuf
使用VS201打開build目錄,打開項目INSTALL.vcxproj -> 選擇 Release x64 -> 生成
最終在Cmake所設置的install路徑下可以得到下一步所需要的libprotobuf.lib文件。
三、爲python環境安裝protobuf的cpp_implementation
(1)將libprotobuf.lib文件複製到protobuf-3.11.2/python目錄中,將libprotobuf.lib改名爲protobuf.lib
(2)輸入以下命令,即可將python包安裝到當前python的路徑下
python setup.py build --cpp_implementation
python setup.py install --cpp_implementation
以上即是按照步驟。