第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在更多線程中使用 Python gRPC 客戶端存根時,我可以提高性能嗎?

在更多線程中使用 Python gRPC 客戶端存根時,我可以提高性能嗎?

慕哥9229398 2023-06-06 16:28:27
假設我有一個 PythongRPC服務器和一個相應的客戶端。根據(jù)這個問題,可以利用相同的 gRPC 通道傳遞給客戶端存根,每個存根在不同的線程中運行。假設 RPC 函數(shù)foo()是從線程 T1 調用的,響應大約需要一秒鐘。我可以foo()同時從線程 T2 調用,而 T1 仍在等待線程中的響應,或者通道是否以某種方式鎖定,直到第一次調用返回?換句話說:是否通過使用更多線程來提高性能,因為相應的服務器基于線程池并且能夠“并行”處理更多請求,如果是,我應該為每個線程使用相同的通道還是不同的通道?編輯:根據(jù)快速測試,似乎可以使用來自不同線程的相同通道的并行請求,并且以這種方式進行處理是有道理的。但是,因為在關閉問題之前,我想請專家確認這段代碼是否正確:import timeimport threadingimport grpcimport helloworld_pb2import helloworld_pb2_grpcdef run_in_thread1(channel):? ? n = 10000? ? for i in range(n):? ? ? ? stub = helloworld_pb2_grpc.GreeterStub(channel)? ? ? ? response = stub.SayHello(helloworld_pb2.HelloRequest(name='1'))? ? ? ? print("client 1: " + response.message)? ??def run_in_thread2(channel):? ? n = 10000? ? for i in range(n):? ? ? ? stub = helloworld_pb2_grpc.GreeterStub(channel)? ? ? ? response = stub.SayHello2(helloworld_pb2.HelloRequest(name='2'))? ? ? ? print("client 2: " + response.message)if __name__ == '__main__':? ? print("I'm client")? ? channel = grpc.insecure_channel('localhost:50051')? ? x1 = threading.Thread(target=run_in_thread1, args=(channel,))? ? x1.start()? ? x2 = threading.Thread(target=run_in_thread2, args=(channel,))? ? x2.start()? ??? ? x1.join()? ? x2.join()
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

gRPC 使用 HTTP/2 并且可以在一個連接上多路復用多個請求,并且 gRPC 客戶端連接應該在客戶端應用程序的生命周期內重復使用。

如果您在使用數(shù)據(jù)庫時受到啟發(fā),我會說您不必擔心它,因為在使用 gRPC 時不存在打開連接開銷。


查看完整回答
反對 回復 2023-06-06
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號