背景:python环境下 Triton Inference Server,深度学习模型部署,采用grpc协议
使用repeated字段定义
一维:
// 返回信息
message ProcessResult {
repeated int64 input_ids = 1;
repeated int64 attention_mask = 2;
repeated int64 token_type_ids = 3;
}
赋值: 直接通过proto对象存根对象访问赋值或者用append添加
object.ProcessResult(input_ids=result[0],attention_mask=result[1],token_type_ids=result[2])
二维:
message ProcessingReply {
message Result{
repeated float processdata = 1;
}
repeated Result result = 1;
}
赋值:复合类型不能直接使用append赋值,需要用proto存根对象访问repeated外层字段获取add()对象,由于内层也是数组,所以再用extend添加list对象
###processing_result是要赋值给数组的数据
#二维数组输入protobuf
for i in range(len(processing_result)):
d = response.result.add()
d.processdata.extend(processing_result[i])
输出:
#protobuf二维数组输出
data = []
for i in response.result:
datatmp = []
for j in i.processdata:
datatmp.append(j)
data.append(datatmp)
data = np.array(data)#转换后供后续接口使用