當我們實例化 gRPC 服務器時,我們傳遞ThreadPoolExecutor給它的構造函數(shù):grpc.server(futures.ThreadPoolExecutor(max_workers=1))據(jù)我所知,Python 具有 GIL,它使線程無用地用于 CPU 綁定任務。例如,我的 gRPC 服務器提供 Tensorflow 模型和 gRPC 健康檢查服務。增加線程池中的線程數(shù)對我有什么好處嗎?
1 回答

繁星coding
TA貢獻1797條經驗 獲得超4個贊
現(xiàn)在 grpc python 綁定到并發(fā)期貨線程池,我相信路線圖顯示將來我們將能夠使用 asyncio。線程池執(zhí)行器只允許我們指定最大并發(fā)連接數(shù)。您是正確的,使用 python 我們有 GIL,因此線程僅限于相同的 CPU 內核,因此我們沒有線程的并行性。如果您的任務受 CPU 限制,它們不會通過添加更多線程在 Python 中受益。
線程池中的更多線程是否有任何好處,這實際上取決于您的應用程序的詳細信息。您可以在一個進程中運行您的 grpc 服務器,在另一個進程中運行您的 tensorflow(使用多處理模塊),這使您可以訪問更多內核,但您需要確定將信息從 tensorflow 進程傳輸?shù)?grpc 服務器的協(xié)議。
添加回答
舉報
0/150
提交
取消