Protobuf数组类型的简单使用

背景: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)#转换后供后续接口使用

供参考:python序列化proto时对repeated修饰数据进行赋值(常用类型和其他类型)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值