日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
師父給了我一個.proto文件,我應(yīng)該怎么使用?

回想我年輕的時候,在做一個項目時,需要計算斐波那契數(shù)列第 n 項的值。但是我只會使用遞歸來實現(xiàn)。眾所周知,遞歸算法計算斐波那契數(shù)列的效率極差,速度極慢。

武進網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

于是我求助于當時我的師父,問他有沒有辦法幫我解決這個問題。

我?guī)煾刚f:“有啊,我寫過,但是代碼是用C++ 寫的,你估計看不懂。不過沒關(guān)系,你用 Python 直接調(diào)用就可以了?!?/p>

我很驚訝:“用 Python 直接調(diào)用C++代碼嗎?看起來似乎很麻煩啊?!?/p>

師父說:“一點也不麻煩。我給你一個.proto 文件和一個地址,你拿去自動生成代碼就能調(diào)用了?!?/p>

于是,我拿到了一個mentors_secret.proto文件,里面的內(nèi)容非常簡單:

 
 
 
 
  1. syntax = "proto3";
  2. message NumToCalc {
  3.     int32 num = 1;
  4. }
  5. message Result {
  6.     int32 result = 1;
  7.     string msg = 2;
  8.     bool success = 3;
  9. }
  10. service MentorsSecret {
  11.     rpc CalcFib(NumToCalc) returns (Result) {}
  12. }

還有一個地址:122.51.39.219:8766。

原來是使用 gRPC 啊。這樣我就知道怎么做了。

安裝環(huán)境

首先,我們先安裝Python 版本的gRPC:

 
 
 
 
  1. pip install grpcio grpcio-tools

生成代碼

接下來,基于這個mentors_secret.proto文件,自動生成代碼。cd進入mentors_secret.proto文件所在的文件,執(zhí)行下面的命令:

 
 
 
 
  1. python3 -m grpc_tools.protoc -I . --python_out=. --grpc_python_out=. ./mentors_secret.proto

此時,可以看到當前文件夾中生成了兩個文件:mentors_secret_pb2.py和mentors_secret_pb2_grpc.py。

如下圖所示:

這兩個文件的內(nèi)容,不需要看。

調(diào)用遠程服務(wù)

接下來,創(chuàng)建一個新文件,叫做client.py,用來調(diào)用遠程的函數(shù):

 
 
 
 
  1. import grpc
  2. from mentors_secret_pb2 import NumToCalc
  3. from mentors_secret_pb2_grpc import MentorsSecretStub
  4. channel = grpc.insecure_channel('122.51.39.219:8766')
  5. stub = MentorsSecretStub(channel)
  6. result = stub.CalcFib(NumToCalc(num=36))
  7. print('斐波那契數(shù)列第36像是:', result.result)

代碼加上空行總共只有10行。1-3行導(dǎo)入模塊,6,7行創(chuàng)建遠程鏈接。第9行調(diào)用遠程的函數(shù)。第10行打印結(jié)果。

我們來看看運行效果:

運行結(jié)果秒出。

總結(jié)

當我們拿到一個.proto文件,需要去調(diào)用gRPC 服務(wù)時,我們一般有如下步驟:

(1) 自動生成mentors_secret_pb2.py和mentors_secret_pb2_grpc.py文件。

(2) 查看.proto文件里面,service后面的名字MentorsSecret,如下圖所示:

(3) 編寫固定的代碼:

 
 
 
 
  1. import grpc
  2. from mentors_secret_pb2_grpc import MentorsSecretStub # service 名字后面加上 Stub
  3. channel = grpc.insecure_channel('遠程服務(wù)地址和 端口')
  4. stub = MentorsSecretStub(channel)

(4) 調(diào)用遠程函數(shù)。通過.proto文件,可以知道遠程函數(shù)CalcFib接收一個參數(shù)NumToCalc,所以把它導(dǎo)入進來:from mentors_secret_pb2 import NumToCalc,它里面的參數(shù)為num,所以調(diào)用遠程服務(wù)時賦值:

 
 
 
 
  1. para = NumToCalc(num=36)
  2. calc_result = stub.CalcFib(para)

(5) 從.proto知道返回的結(jié)果是Result里面的result屬性。于是打印calc_result.result獲得結(jié)果。


網(wǎng)站題目:師父給了我一個.proto文件,我應(yīng)該怎么使用?
標題URL:http://www.5511xx.com/article/cdcesco.html