中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用.proto 文件

發布時間:2021-10-25 15:42:30 來源:億速云 閱讀:342 作者:iii 欄目:web開發

本篇內容介紹了“怎么使用.proto 文件”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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

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

我師父說:“有啊,我寫過,但是代碼是用C++ 寫的,你估計看不懂。不過沒關系,你用 Python 直接調用就可以了。”

我很驚訝:“用 Python 直接調用C++代碼嗎?看起來似乎很麻煩啊。”

師父說:“一點也不麻煩。我給你一個.proto 文件和一個地址,你拿去自動生成代碼就能調用了。”

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

syntax = "proto3";   message NumToCalc {     int32 num = 1; }   message Result {     int32 result = 1;     string msg = 2;     bool success = 3; }   service MentorsSecret {     rpc CalcFib(NumToCalc) returns (Result) {} }

還有一個地址:122.51.39.219:8766。

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

安裝環境

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

pip install grpcio grpcio-tools

生成代碼

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

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

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

如下圖所示:

怎么使用.proto 文件

這兩個文件的內容,不需要看。

調用遠程服務

接下來,創建一個新文件,叫做client.py,用來調用遠程的函數:

import grpc from mentors_secret_pb2 import NumToCalc from mentors_secret_pb2_grpc import MentorsSecretStub   channel = grpc.insecure_channel('122.51.39.219:8766') stub = MentorsSecretStub(channel)  result = stub.CalcFib(NumToCalc(num=36)) print('斐波那契數列第36像是:', result.result)

代碼加上空行總共只有10行。1-3行導入模塊,6,7行創建遠程鏈接。第9行調用遠程的函數。第10行打印結果。

我們來看看運行效果:

怎么使用.proto 文件

運行結果秒出。

總結

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

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

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

怎么使用.proto 文件

(3) 編寫固定的代碼:

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

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

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

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

“怎么使用.proto 文件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沁水县| 新宁县| 仪征市| 浪卡子县| 文昌市| 桂东县| 茂名市| 桑日县| 资溪县| 抚顺市| 广宁县| 曲靖市| 霍林郭勒市| 盐亭县| 湘西| 民乐县| 乡宁县| 荣成市| 虞城县| 乐陵市| 招远市| 邳州市| 兰西县| 沽源县| 孟连| 中超| 托里县| 宜川县| 梧州市| 罗定市| 平舆县| 芮城县| 永年县| 清新县| 昌黎县| 惠东县| 漳平市| 玉林市| 宣威市| 长葛市| 田林县|