猿问

grpc服务器中ThreadPoolExecutor的目的是什么?

当我们实例化 gRPC 服务器时,我们传递ThreadPoolExecutor给它的构造函数:

grpc.server(futures.ThreadPoolExecutor(max_workers=1))

据我所知,Python 具有 GIL,它使线程无用地用于 CPU 绑定任务。

例如,我的 gRPC 服务器提供 Tensorflow 模型和 gRPC 健康检查服务。增加线程池中的线程数对我有什么好处吗?


人到中年有点甜
浏览 195回答 1
1回答

繁星coding

现在 grpc python 绑定到并发期货线程池,我相信路线图显示将来我们将能够使用 asyncio。线程池执行器只允许我们指定最大并发连接数。您是正确的,使用 python 我们有 GIL,因此线程仅限于相同的 CPU 内核,因此我们没有线程的并行性。如果您的任务受 CPU 限制,它们不会通过添加更多线程在 Python 中受益。线程池中的更多线程是否有任何好处,这实际上取决于您的应用程序的详细信息。您可以在一个进程中运行您的 grpc 服务器,在另一个进程中运行您的 tensorflow(使用多处理模块),这使您可以访问更多内核,但您需要确定将信息从 tensorflow 进程传输到 grpc 服务器的协议。
随时随地看视频慕课网APP

相关分类

Python
我要回答