gRPC 如何使用python表示多维数组
在使用gRPC作为远程调用框架时,如何使用python来表示多维数组呢?gRPC中定义proto文件时,有一个参数是repeated,用来表示重复的数据类型,使用这个参数可以表示list类型。如下,我想表示一个三维数组,这个数组表示的是一个三通道RGB彩色图像,proto文件如下所示,proto文件中GrayFeature表示的是一个通道的灰度图像。
syntax = "proto3"; service DataListServer { rpc TransDataList(stream GrayFeature) returns (Reply) {} } message GrayFeature { repeated Feature feature = 1; } message Feature { repeated int32 pixel = 2; }
对应的Python代码如下:
data_list = ndarray.tolist() lenth = len(data_list) for j in range(0, lenth): matrix = data_list[j] gray_feature = data_list_pb2.GrayFeature() for column in range(0, len(matrix)): feature = gray_feature.feature.add() feature.pixel.extend(matrix[column]) yield gray_feature
在服务端对应的解析的Python代码如下:
data_list = [[[]]] * 3 for gray_feature in features: j = 0 feature = gray_feature.feature length = len(feature) matrix = [[]] * length for i in range(0, length): matrix[i] = feature[i].pixel data_list[j] = matrix j += 1