Broadcasting to multiple clients¶
The complete example can be found example3.py.
The encoded result is routed to the client according to its identity. If
you have multiple clients with same identity, then they all receive the
results! You can use this multicast feature to do some cool things,
e.g. training multiple different models (some using
tensorflow) in multiple separated processes while only
BertServer once. In the example below,
bc and its two
clones will all receive encoded vector.
# clone a client by reusing the identity def client_clone(id, idx): bc = BertClient(identity=id) for j in bc.listen(): print('clone-client-%d: received %d x %d' % (idx, j.shape, j.shape)) bc = BertClient() # start two cloned clients sharing the same identity as bc for j in range(2): threading.Thread(target=client_clone, args=(bc.identity, j)).start() for _ in range(3): bc.encode(lst_str)