成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

師父給了我一個 .proto 文件,我應該怎么使用?

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

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

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

[[350118]]

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

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

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

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

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

還有一個地址:122.51.39.219:8766。

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

安裝環境

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

  1. pip install grpcio grpcio-tools 

生成代碼

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

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

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

如下圖所示:

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

調用遠程服務

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

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

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

我們來看看運行效果:

運行結果秒出。

總結

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

(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.  
  4.  
  5. channel = grpc.insecure_channel('遠程服務地址和 端口') 
  6. stub = MentorsSecretStub(channel) 

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

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

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

 

責任編輯:趙寧寧 來源: 未聞Code
相關推薦

2021-10-04 18:44:06

Linux MintFedora操作系統

2022-08-14 09:00:00

JWT 令牌憑證微服務

2024-03-18 00:01:00

按鈕鏈接元素

2021-05-21 14:26:18

ObjectMap前端

2022-02-22 20:35:22

公鑰私鑰數據

2022-03-07 05:53:41

線程CPU代碼

2022-08-29 08:28:58

JS對象數組

2021-09-02 07:04:38

JWT簽名算法

2017-05-02 10:13:46

2015-11-06 10:14:36

APP虛擬服務器

2013-05-21 09:32:11

ChromebookChrome OS

2009-03-18 13:12:36

程序員技術IT行業

2018-10-16 09:55:24

Linux發行版內核

2020-09-15 12:59:48

KotlinFlutter移動

2013-05-13 10:24:44

谷歌開發團隊開發管理

2012-11-28 13:25:27

程序員

2023-12-26 18:47:32

2020-06-02 09:22:45

腳本CPUDDG

2014-07-22 10:51:02

密碼安全

2020-11-04 07:56:19

工具Linux 翻譯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品乱码一区二三区小蝌蚪 | 91精品国产一区二区三区 | 久久婷婷色| 精品亚洲一区二区三区 | 精品一区在线 | www.色综合 | 久久影音先锋 | 女人牲交视频一级毛片 | 一区二区高清 | 久久九九99 | 久久久久久久久久久高潮一区二区 | 久久精品中文 | 欧美一区二区三区精品 | 亚洲精品乱码久久久久久蜜桃 | 污片在线免费观看 | 日本视频一区二区三区 | 国产97视频在线观看 | 久草视频在线播放 | 日韩欧美在线一区二区 | www.日韩系列 | 视频三区 | 亚洲一区二区三区四区av | 免费av在线| 美女福利视频一区 | 亚洲乱码国产乱码精品精98午夜 | 99精品99| 午夜精品一区二区三区免费视频 | 国产精品日本一区二区在线播放 | 久久久xx | 亚洲久久 | 亚洲精品视频免费看 | 久久手机在线视频 | 狠狠综合久久av一区二区小说 | 精品欧美一区二区三区久久久 | 亚洲成人自拍 | 欧美亚洲第一区 | 99热在线播放 | 日韩国产一区 | 伊人春色在线 | 天天av综合 | 国产成人福利在线观看 |