在使用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

  

 

相关文章:

  • 2022-12-23
  • 2021-06-22
  • 2022-12-23
  • 2021-08-02
  • 2021-10-13
  • 2021-12-10
  • 2022-12-23
  • 2021-05-28
猜你喜欢
  • 2022-12-23
  • 2021-12-05
  • 2021-11-05
  • 2022-12-23
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
相关资源
相似解决方案