поддержка многопоточности на клиенте и сервере - PullRequest
0 голосов
/ 25 октября 2018

Я хочу знать, поддерживает ли GRPC Python многопоточность?Пожалуйста, поделитесь ссылкой.Я написал код в одном потоке, но не знаю, как писать в многопоточности.

1 Ответ

0 голосов
/ 31 октября 2018

gRPC Python поддерживает многопоточность как на клиенте, так и на сервере.Что касается сервера, вы создадите сервер с пулом потоков, поэтому по умолчанию он является многопоточным.Что касается клиента, вы можете создать канал и передать его нескольким потокам Python, а затем создать заглушку для каждого потока.Кроме того, поскольку управление каналом осуществляется в C, а не в Python, создание нескольких каналов на одном сервере в одном и том же процессе не даст вам никакого преимущества в производительности.

import threading
import grpc

def worker(channel):
    stub = your_pb2_grpc.YourStub(channel)
    ...YOUR WORK WITH STUB

channel = grpc.insecure_channel(<YOUR PORT>)
your_thread = threading.Thread(target=worker, args=(channel,))
your_thread.start()

Кроме того, если вы собираетесь использовать многопроцессорностьвместо многопоточности вы можете ссылаться здесь https://github.com/grpc/grpc/issues/16001 и https://github.com/grpc/grpc/blob/master/doc/fork_support.md.

...